Как определить, является ли значение угла поворота UIView перпендикулярным оси Y или ограничить угол поворота только четвертью круга вместо целых 360 оборотов. У меня есть UIView с приведенной ниже ссылкой CATransformation.UIView исчезает после применения CATransform3DRotate
t = CATransform3DIdentity;
//Add the perspective!!!
t.m34 = 1.0/ 300;
t = CATransform3DRotate(t, 45.0f * M_PI/180.0f, 0, 1, 0);
self.containerView.layer.sublayerTransform = t;
как в этом link1 и изменение угла поворота на основе UIPanGesture в пространстве за пределами повернутой UIView с ниже код
- (void)handleRevealGestureStateChangedWithRecognizer:(UIPanGestureRecognizer *)recognizer{
//Calculating percent of translation.
CGPoint translation = [recognizer translationInView:recognizer.view.superview];
CGFloat rotationpercent = translation.x/recognizer.view.frame.size.width;
[self rotate:rotationpercent]; //calling method to transform based on translation value
}
- (void)rotate:(CGFloat)rotateDegress{
CGFloat angle = M_PI * rotateDegress;
t = CATransform3DRotate(t, angle, 0, 1, 0);
self.containerView.layer.sublayerTransform = t;
}
это вращает вид и наверняка углы зрения либо перпендикулярны оси Y, либо далее за пределы окна, чтобы вращаться в полном объеме на 360 градусов, как показано на рисунке link2.
Следовательно, можно определить, превышает ли угол 90 градусов, так что вращение отключено.
Благодаря
Duncan, спасибо за решение, но проблема, с которой я столкнулся, состоит в том, что значения угла поворота вычисляются из жесты панорамы, кажется, что несколько произвольных значений различаются от 0.122235,0.090892, 0,007812 для отображения UIView перпендикулярно оси Y . Таким образом, невозможно определить предел ближе, как вы предполагали. – srm
В вашем втором блоке кода вы используете распознаватель жестов для вычисления rotationpercent, но тогда вы не используете его для вычисления rotateDegress. Если rotateDegress degrees - это переменная стека, она, вероятно, содержит мусор, и поэтому вы получаете полуслучайные результаты. (Если нет кода, который вы не опубликовали) –
Да, простите меня за то, что я пропустил, чтобы прокомментировать, что в моем втором блоке кода рассчитанный «rotationpercent» из распознавателя жестов был передан в качестве параметра методу применения перевода и присвоен переменной имя 'rotateDegress'. Поэтому rotateDegress не является переменной стека, которая содержит значения мусора. – srm