默认情况下, UIImageView 将仅围绕其中心旋转。如何让它围绕图像中的任何其他点旋转?
kmr
问问题
17587 次
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 回答