如何使用修复点旋转UIIMageVIew?

时间:2009-09-12 11:40:35

标签: iphone

我想在角度上旋转图像。但是我想用固定点旋转图像。我如何设置此修复点?

3 个答案:

答案 0 :(得分:13)

设置视图的图层的anchorpoint,它在视图 - 局部坐标中从0到1.也就是说,左上角是0,0,右下角是1,1。

例如,默认设置是围绕中心旋转:

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

如果要围绕原点旋转:

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

或中右边缘:

imageView.layer.anchorPoint = CGPointMake(1,.5);

答案 1 :(得分:4)

如果您使用Xcode中默认的“基于视图的应用程序”创建项目,只需将此代码添加到它创建的主视图控制器中的-viewDidLoad:

- (void)viewDidLoad {
    [super viewDidLoad];

    CABasicAnimation *rotationAnimation = [CABasicAnimation 
                         animationWithKeyPath:@"transform.rotation.z"];

    [rotationAnimation setFromValue:DegreesToNumber(0)];
    [rotationAnimation setToValue:DegreesToNumber(360)];
    [rotationAnimation setDuration:3.0f];
    [rotationAnimation setRepeatCount:10000];

    [[[self view] layer] addAnimation:rotationAnimation forKey:@"rotate"];
}

这将围绕x轴旋转视图(默认为中心)。您可以设置该视图的内容(例如[[self view] setContents:image]其中image是使用UIImage加载的图像)。

以下是将度数转换为弧度的辅助函数。

CGFloat DegreesToRadians(CGFloat degrees)
{
    return degrees * M_PI / 180;
}

NSNumber* DegreesToNumber(CGFloat degrees)
{
    return [NSNumber numberWithFloat:
            DegreesToRadians(degrees)];
}

希望有所帮助。

答案 2 :(得分:1)

imageView.layer.anchorPoint = CGPointMake(.5,.5);要获取此信息,您需要导入以下头文件

#import <QuartzCore/QuartzCore.h>