如何针对任何点(中心除外)旋转UIImageView?

时间:2009-05-08 10:54:17

标签: iphone cocoa-touch uikit core-animation

默认情况下,UIImageView只会围绕其中心旋转。如何让它围绕图像中的任何其他点旋转?

1 个答案:

答案 0 :(得分:18)

这样做的一种方法是更改​​UIImageView底层的anchorPoint并围绕它旋转。您可以使用以下内容更改旋转点:

imageView.layer.anchorPoint = CGPointMake(0.25, 0.25);

anchorPoint是根据图层内的相对坐标定义的。也就是说,(0,0)是图层的左上角(在iPhone上,UIView图层翻转了Y坐标),(1,1)是右下角。

移动anchorPoint可能会移动您的图像,因此您可能需要在之后调整其位置。

要围绕该新锚点旋转图像的图层,可以使用以下内容更改图层的CATransform3D结构:

CATransform3D rotatedTransform = imageView.layer.transform;
rotatedTransform = CATransform3DRotate(rotatedTransform, 60.0 * M_PI / 180.0, 0.0f, 0.0f, 1.0f);
imageView.layer.transform = rotatedTransform;

此示例围绕定位点进行60度的增量旋转。

默认情况下,对图层的所有更改都会进行动画处理。您可以通过将更改包含在CATransaction中来禁用此动画,如下所示:

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];    

// Code for changes here

[CATransaction commit];