默认情况下,UIImageView只会围绕其中心旋转。如何让它围绕图像中的任何其他点旋转?
答案 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];