将图像旋转到锚点周围90度

时间:2013-07-03 09:29:22

标签: ios objective-c calayer cabasicanimation quartz-core

我想将我的imageview旋转90度绕锚点。你可以在这里看到我想要达到的目标。enter image description here

我有这段代码。

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

NSNumber* DegreesToNumber(CGFloat degrees)
{
    return [NSNumber numberWithFloat:
            DegreesToRadians(degrees)];
}
-(IBAction)rotate:(id)sender{
    CABasicAnimation *rotationAnimation = [CABasicAnimation
                                           animationWithKeyPath:@"transform.rotation.y"];

    [rotationAnimation setFromValue:DegreesToNumber(0)];
    [rotationAnimation setToValue:DegreesToNumber(90)];
    [rotationAnimation setDuration:3.0f];
    [rotationAnimation setRepeatCount:1];

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

有一个观点问题。首先,当它旋转90度时,它立即翻转回其原始状态。此外,我不知道如何将它转变为锚点。

任何帮助?

2 个答案:

答案 0 :(得分:1)

试试这个:

self.imgShare.transform = CGAffineTransformMakeRotation(M_PI/2);

答案 1 :(得分:0)

您正在使用仅处理动画部分的CABAsicAnimation。旋转后轮换视图是您的责任。 因此,您应该在旋转后更改视图的transform属性。

self.imgShare.transform = CGAffineTransformMakeRotation(M_PI/2);

针对anchorPoint的问题。每个UIView都由CALayer支持,每个CALayer都有一个anchorPoint属性。只需更改视图anchorpoint,您就可以围绕该点旋转视图。

anchorPoint默认为0.5,0.5。将其更改为0.0到1.0之间。