0

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

[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];

延迟有效,但无论我为持续时间输入什么值,动画都会快速运行(我尝试了从 0.5 到 2000 的值)。我也尝试了一些UIViewAnimationCurve选项,但似乎没有任何效果。

我错过了什么吗?

4

1 回答 1

3

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

于 2012-08-27T20:59:28.853 回答