使用CGAffineTransformMakeRotation以相同的中心点旋转UIImageView

时间:2012-11-22 15:16:43

标签: objective-c uiimageview rotation cgaffinetransform

我正在尝试旋转UIImageView并使其保持居中。在下面的图像中,我希望旋转的箭头(红色十字线)中心点与0°箭头的中心点(蓝色十字线)匹配。

我尝试了各种锚点,但我似乎无法按照自己的意愿行事。

// Rotate
self.arrowRotatedImageView.layer.anchorPoint = CGPointMake(0.5,0.5);
CGFloat angle = 45 * (M_PI/180);
self.arrowRotatedImageView.transform = CGAffineTransformMakeRotation(angle);

我错过了什么?我正在阅读Apple docs  但我无法弄清楚。

iPhone screenshot of a rotated arrow on top of a non-rotated arrow

2 个答案:

答案 0 :(得分:6)

原来奇怪的轮换问题与新的iOS 6自动布局功能有关。一旦我花了一些时间来理解对齐约束如何工作,我就能够达到我想要的结果。

如果您遇到奇怪的轮换问题,并且正在使用启用了autolayout的iOS 6,则可能需要调整约束。

关键是在旋转的父视图中将图像垂直和水平居中。

答案 1 :(得分:2)

我遇到了同样的问题,我通过将Center X Alignment ConstraintCenter Y Alignment Constraint应用于相关的UIImageView来解决问题。这样做会阻止图像远离其中心x和y位置。