ios – 为什么在使用CGAffineTransformMakeRotation旋转它时,视图会改变位置

前端之家收集整理的这篇文章主要介绍了ios – 为什么在使用CGAffineTransformMakeRotation旋转它时,视图会改变位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下超级简单的动画,我基本上是从原来的角度/中心旋转一个视角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);
    }];

点击旋转看魔术:)

原文链接:https://www.f2er.com/iOS/337134.html

猜你在找的iOS相关文章