我正在尝试使用以下代码在 iPhone 上旋转包含一些 CALayers 的 320x320 UIView(黑色):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2];
CGAffineTransform rr=CGAffineTransformMakeRotation(M_PI_2*2);
self.transform=rr;
[UIView commitAnimations];
}
请注意,M_PI_2 是 pi/2 (math.h)。此代码将 View 原地旋转 180°。但是,如果我将其更改为 M_PI_2 本身(没有 *2),黑色 UIView 就会消失,内容向下和向右移动,然后大部分旋转到屏幕外。为什么是这样?我很困惑为什么 View 不只是旋转 90°。
最佳答案
因为,transform
与affineTransform
不同。 transform
需要一个 CATransform3D
结构,因此您应该使用便捷方法 setAffineTransform
来代替。
编辑
所以看起来self
是一个UIView,我上面的答案是不相关的。尝试使用[UIView setAnimationBeginsFromCurrentState:YES]
。
关于ios - 有人可以解释一下 UIView 的奇怪旋转吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471454/