UIView animateWithDuration不尊重持续时间

时间:2012-08-27 20:50:21

标签: objective-c animation uiview

我有一个简单的动画,可以将视图从一个位置移动到另一个位置。动画功能正常,但不遵循方法声明中设置的持续时间......

[UIView beginAnimations:@"listAnimationIn" context:nil];
[UIView animateWithDuration:1.0
                      delay:1.0
                    options:UIViewAnimationCurveLinear
                 animations:^{
                     lvc.view.frame = CGRectMake(0, 0, 320, 480);
                 }
                 completion:nil];
[UIView commitAnimations];

延迟有效,但动画运行 FAST ,无论我输入的值是多长时间(我已经尝试过从0.5到2000的值)。我还尝试了一些UIViewAnimationCurve选项,但似乎没有任何效果。

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

您不需要-beginAnimations:context:-commitAnimations消息。这是旧的做法,你不应该真的混在一起。只需调用-animateWithDuration:delay:options:animations:completion:方法即可。此外,如果添加完成块,它将传递一个布尔变量,该变量将告诉您动画是提前终止还是运行完成。如果动画太慢,或者您在相同的视图层次结构(具有旧样式的开始/提交调用)的情况下开始竞争动画,则会发生这种情况。