动画一个时钟的手。 (回转)

时间:2010-09-22 12:37:07

标签: iphone objective-c

所以我将我的时钟作为UIImageView。这完美的时钟不动。我很满意。

我将时钟之手作为另一个UIImageView,它放在时钟ImageView的顶部。

我想让我的时钟之手在10秒内旋转360度,但是棘手的部分是我想让它旋转而不是在时钟的TopLeft上的原点旋转ImageView放在一个点20,20 clockhand ImageView。

到目前为止,这是我的代码,它在10秒内旋转时钟指针360度,但它会围绕ImageView的topleft旋转。

                CABasicAnimation *rotate;
            rotate = [CABasicAnimation 
animationWithKeyPath:@"transform.rotation"];
            rotate.fromValue = [NSNumber numberWithFloat:0];
            rotate.toValue = [NSNumber numberWithFloat:6.283185307];
            rotate.duration = 10.00;
            rotate.repeatCount = 1;
            needleImageView.layer.anchorPoint = CGPointMake(0.5, 0.5);
            [needleImageView.layer addAnimation:rotate forKey:@"10"];

任何人都可以提供一些关于让它围绕needleImageView的20,20点旋转的提示吗?

谢谢, -code

2 个答案:

答案 0 :(得分:3)

默认情况下,将对中心应用变换。您需要更改图层的anchorPoint以进行更改。有关详细信息,请查看link text

重要的是,如果更改anchorPoint,则视图的位置也会发生变化,因为图层的position属性与锚点有关。因此,您需要在更改anchotPoint后设置旧框架。

你需要做这样的事情。

// your image is 100 x 100 pixels and you want to make (20, 20) as the transformation center
CGRect oldFrame = myView.frame;
myView.layer.anchorPoint = CGPointMake(0.2, 0.2);
myView.frame = oldFrame
顺便说一下,我还没有编写代码,只是打字,所以可能会有一些拼写错误。

答案 1 :(得分:1)

您可以旋转超级视图或更改其根图层的anchorPoint属性,请参阅http://www.informit.com/blogs/blog.aspx?uk=Ask-Big-Nerd-Ranch-Rotating-an-iPhone-View-Around-a-Point