如何确定UIView的旋转角度值是否垂直于Y轴,或者将旋转角度限制为圆的四分之一而不是整个360度旋转。 我有一个UIView与下面应用的CATransformation,。
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 并使用以下代码在旋转的UIView外部空间中基于UIPanGesture更改旋转角度
- (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度,从而禁用旋转。
由于
答案 0 :(得分:0)
你的代码使用的角度是度数,这很好(因为你在应用旋转之前转换为弧度。)
只需将代码放入手势识别器中,即可将角度限制在0到85度的范围内。 (尝试上限,看看在页面太薄之前你能得到的接近90%,以保持深度的错觉。)问题解决了。