2012-04-25 118 views
0

我需要为uiimageview创建一个旋转动画。我能想到的最好的比喻是挂在墙上的照片。支撑图片的指甲放在图片的顶部。iPhone视图旋转/摇摆动画

如果我推动图片,我想模拟图片的轻微摆动运动,直到它最终恢复其起始位置。

我知道我必须首先改变视图的锚点,但我不确定如何解决问题的其余部分。我可以使用CABasicAnimation,但我猜测这将是一个相对简单的动画可笑的复杂/矫枉过正。

有什么建议吗?

[编辑]

answer实际工作对我来说很好用块:)

回答

3

,我不认为它应该是用CABasicAnimation动画的transform.rotation财产和选择计时功能的权利太难了。沿线的东西:

CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
    [anim setToValue:[NSNumber numberWithFloat:startAngle]]; 
    [anim setFromValue:[NSNumber numberWithDouble:endAngle]]; 
    [anim setDuration:duration]; 
    [anim setRepeatCount:count]; 
    [anim setAutoreverses:YES]; 
    [anim setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [selectedCoverView.layer addAnimation:anim forKey:@"SwingingRotation"]; 

重点是选择正确的计时功能;如果没有一个预定义的确定,那么可以使用+ (id)functionWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y(其中控制点定义贝塞尔曲线)定义任意定时函数。

+0

谢谢@sergio我正在执行上面的建议,并且除了一件事情之外它的工作很好。它的摆动,但只有一半摆动,即视图将摆动到一边,并回到其原来的位置,但它不会摆动到另一边。有没有办法使用上述方法来完成挥杆,而不必创建第二个块来将挥杆动画化到另一侧?再次感谢! – bennythemink 2012-04-25 12:01:51

+0

你是对的:添加'[anim setRepeatCount:count];'指定迭代次数(或尽可能多的'NSUIntegerMax')。 – sergio 2012-04-25 12:13:35

+0

嘿@sergio我可能没有足够好的解释自己,对不起。我的意思是说,视图将从0度摆动到(例如)20度,然后再回到0度。但我需要它从0度回到20回到0,然后回到-20,最后回到0度。 – bennythemink 2012-04-25 12:23:05