是否有一种简单的方法让动画超越其目标然后再回来?
所以,我想说我想将一个圆圈从50%缩放到110%然后再回到100%,创造出几乎卡通效果。
我认为Flash或某些jQuery插件具有内置的缓动选项。 iOS有类似的东西,还是需要手动完成?
答案 0 :(得分:4)
您无需手动执行此操作。您可以使用UIView动画方法几乎自动完成。
您可以将目标大小设置为110%,并将动画设置为反向和“重复”。在这种情况下,您将重复计数设置为0.58。也就是说,完成一个完整的后退和后退循环的一半,然后是其中的1/6。
这并不是全部。如果您这样做,在动画完成后,它将快速恢复到110%。因此,您需要将其设置回100%以使其保持在目标位置。
像这样:
// make it 50% size initially; maybe you already did that
circleView.transform = CGAffineTransformMakeScale(0.5,0.5);
[UIView animateWithDuration:1.0 / 0.58 // actual duration 1.0s
animations:^{
[UIView setAnimationRepeatCount:0.58];
[UIView setAnimationRepeatAutoreverses:YES];
circleView.transform = CGAffineTransformMakeScale(1.1,1.1);
}
completion:^(BOOL finished){
circleView.transform = CGAffineTransformIdentity;
}
]
答案 1 :(得分:3)
你必须手动完成。看看CAKeyframeAnimation
。您可以指定要在动画中的不同点使用的不同值。通过设置timingFunctions
属性来支持缓动。最难的部分是找出正确的值来获得你想要的效果。
答案 2 :(得分:0)
这只是两个动画 - 当第一个完成时,在一个块中开始第二个动画。缓动选项与它们加速/减速到动画的方式有关。
这是基本的想法
http://objcolumnist.com/2010/09/19/core-animation-using-blocks/
在您的代码中,您可能希望在完成块中启动下一个动画。