为什么setAnimationDuration没效果,我的动画太快了

时间:2013-02-27 09:22:44

标签: objective-c

方法setAnimationDuration对我的代码没有影响,我的动画太快了。这是代码

[UIView beginAnimations:nil context:nil];      
image1.frame=CGRectMake(0, 0, 0,image1.frame.size.height);
image2.frame=CGRectMake(image2.frame.size.width, 0, 0,image2.frame.size.height);
[UIView setAnimationDuration:10];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];

2 个答案:

答案 0 :(得分:6)

您需要在更改可设置动画的属性之前设置持续时间值。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:10];
image1.frame=CGRectMake(0, 0, 0,image1.frame.size.height);
image2.frame=CGRectMake(image2.frame.size.width, 0, 0,image2.frame.size.height);
[UIView setAnimationDelegate:self];
[UIView commitAnimations];

针对方法setAnimationDuration:

的UIView状态的Apples类引用中的讨论
  

您必须在更改视图的可动画属性之前调用此方法。默认值为0.2秒。

这就是为什么你会得到非常快的动画。

这种动画风格不受ios4的限制,所以如果上述方法不起作用,请尝试使用新的动画块样式。

答案 1 :(得分:0)

使用以下方法为视图添加动画:

[UIView animateWithDuration:2.0 animations:^()
 {
     //Your code here
 }];

或者使用这种方法:

[UIView transitionWithView:super.view duration:1.0 options:UIViewAnimationOptionTransitionCurlUp animations:^
     {
         //your code here
     }completion:NULL
    ];