10

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

4

1 回答 1

17

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

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

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

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

要围绕该新锚点旋转图像的图层,您可以使用以下内容更改图层的 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];
于 2009-05-08T12:46:55.037 回答