我有以下超级简单的动画,我基本上是从原来的角度/中心旋转一个视角2弧度,它旋转很好,我唯一的误会就是为什么视图从旋转发生时的原始位置移动.
[UIView animateWithDuration:1.0 animations:^{ self.someView.transform = CGAffineTransformMakeRotation( 2 ); }];
当上面的代码旋转时,为什么视图移动?
我正在试图在CGAffineTransform Reference中看到这些信息.
了解锚点point.
我发现这个线程,但它没有显示具体的答案.
Why rotating imageView,it changes position?
非常感谢
解决方法
由于@fs_tigre请求,我添加了另一个答案.问题在于您的xib文件中的自动布局,不幸的是,这是为什么会影响转换.
现在这里是我解决问题的步骤:
现在这里是我解决问题的步骤:
首先你需要摆脱你的汽车布局(是的,你必须)
取消选中使用自动布局
2-删除所有限制,并自动调整您的视图将被旋转的掩码,如屏幕截图所示
(这里我有我的蓝色框,看右边的自动调整,没有选择)
我已经对您的轮换代码进行了一些更改
self.someView.layer.anchorPoint = CGPointMake(0.5,0.5); // one degree = pi/180. so... // rotate by 90 CGFloat radians = (M_PI/180) * 90; [UIView animateWithDuration:1.0 animations:^{ self.someView.transform = CGAffineTransformRotate(self.someView.transform,radians); }];
点击旋转看魔术:)