【发布时间】:2014-04-21 11:29:56
【问题描述】:
如何确定 UIView 的旋转角度值是否垂直于 Y 轴或将旋转角度限制为仅圆的四分之一而不是整个 360 度旋转。 我有一个带有以下应用 CATransformation 的 UIView。
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 度,从而禁用旋转。
谢谢
【问题讨论】:
标签: ios objective-c rotation catransform3d