我有一个简单的动画,可以将视图从一个位置移动到另一个位置。动画功能正常,但不遵循方法声明中设置的持续时间......
[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
选项,但似乎没有任何效果。
我错过了什么吗?
答案 0 :(得分:3)
您不需要-beginAnimations:context:
和-commitAnimations
消息。这是旧的做法,你不应该真的混在一起。只需调用-animateWithDuration:delay:options:animations:completion:
方法即可。此外,如果添加完成块,它将传递一个布尔变量,该变量将告诉您动画是提前终止还是运行完成。如果动画太慢,或者您在相同的视图层次结构(具有旧样式的开始/提交调用)的情况下开始竞争动画,则会发生这种情况。