我需要为uiimageview创建一个旋转动画。我能想到的最好的比喻是挂在墙上的照片。支撑图片的指甲放在图片的顶部。
如果我按下图片,我想要来回模拟图片的轻微摆动,直到它最终恢复到它的起始位置。
我知道我首先必须从更改视图的锚点开始,但我不确定如何解决问题的其余部分。我可以使用CABasicAnimation,但我猜测得到一个相对简单的动画会非常复杂/过度。
有什么建议吗?
[编辑]
这个answer对我来说实际上很适合使用块:)
答案 0 :(得分: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
定义任意定时功能(控制点定义贝塞尔曲线)。