如何将反弹动画添加到animateWithDuration?

时间:2015-01-13 16:38:53

标签: ios objective-c animation core-animation animatewithduration

我有一个简单的动画,我在滚动视图委托方法scrollViewDidEndDragging中执行。

看起来像这样:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    NSLog(@"finger was lifted");

    [UIView animateWithDuration:1.0
                     animations:^{
                         self.homeLabel.frame = self.view.frame;
                    }];
}

在抬起手指后使用此动画我的homeLabel来自顶部,我想在标签上添加一个反弹动画,所以当它来自顶部时,而不是顺利着陆它将有一个很好的弹跳......我该怎么办? thanksss

2 个答案:

答案 0 :(得分:18)

您可以使用usingSpringWithDamping动画功能。

[UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.2 initialSpringVelocity:5.0 options:UIViewAnimationOptionCurveLinear animations:^{
    self.homeLabel.frame = self.view.frame;
} completion:^(BOOL finished) {

}];

调整Spring DampingInitial Spring Velocity可以提供您想要的效果。

答案 1 :(得分:0)

一个好的解决方案是为视图创建一个自定义图层,覆盖addAnimation:forKey:方法以包含自定义计时功能。

这个answer详细说明了如何做到这一点。

另一个选择是看一下关键帧动画。这个question and answer涵盖了很好的方法。