ios - 有人可以解释一下 UIView 的奇怪旋转吗?

标签 ios uiview core-animation

我正在尝试使用以下代码在 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°。

最佳答案

因为,transformaffineTransform不同。 transform 需要一个 CATransform3D 结构,因此您应该使用便捷方法 setAffineTransform 来代替。

编辑

所以看起来self是一个UIView,我上面的答案是不相关的。尝试使用[UIView setAnimationBeginsFromCurrentState:YES]

关于ios - 有人可以解释一下 UIView 的奇怪旋转吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471454/

相关文章:

ios - 在 iOS 10 中清晰和半透明的 UINavigationBar 状态之间的转换

iOS - 下载大数据集,检测属性值的实体(NSManagedObject)是否已经存在

ios - 动画 UIView 没有按预期工作

ios - 以给定的偏移量开始动画

ios - 在重叠区域点击手势事件

ios - 当我禁用/启用按钮时, View 如何自行重绘?

ios - 表格 View 行高变化时如何添加动画?

ios - 如何使用 iOS 为网页创建缩略​​图?

ios - [ valueForUndefinedKey :]: this class is not key value coding-compliant for the key appointmentDate. '-swift

ios - 不使用 EAGLContext 的 OpenGL ES 示例