2010-11-19 58 views
3

我想转换一些使用beginAnimations的动画代码来使用动画块。那我遇到的问题是,当我使用动画块中的动画去得更快,我似乎无法改变持续时间值开始动画和使用动画块的动画速度不同

这个调整的速度是我开始的最初:

birdFly.image = [UIImage imageNamed: @"bird1.png"]; 
[self.view addSubview:birdFly]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:20]; 
birdFly.frame = CGRectMake(-1116,27,111,48); 
[UIView commitAnimations]; 
[birdFly release]; 

这是我第一次尝试取代我上面的东西。使用此代码,动画比使用原始代码的速度快得多。即使在更改时间似乎并没有在所有的改变速度:

birdFly.image = [UIImage imageNamed: @"bird1.png"]; 
[self.view addSubview:birdFly]; 
[UIView animateWithDuration:20 
    animations:^{ 
     birdFly.frame = CGRectMake(-1116,27,111,48); 
    }]; 

我也试过这个,以为我需要完成块,但速度还是一样快,相比我原本当我没不使用块。

birdFly.image = [UIImage imageNamed: @"bird1.png"]; 
[self.view addSubview:birdFly];  
UIViewAnimationOptions options = UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction; 
     [UIView animateWithDuration:20 delay:0.0 options:options animations:^ 
     { 
      birdFly.frame = CGRectMake(-1116,27,111,48); 
     } completion:nil]; 

代码是否都在做同样的事情?我在这里错过了很简单的东西吗?我认为增加持续时间会让鸟慢下来,减少它会使它快一些,但是当用块来改变它时似乎没有任何影响。

任何指导,将不胜感激。

感谢。

亚伦

回答

4

如果你的动画块被另一动画块中发生的,-animateWithDuration:animations:将继承外块的持续时间。尝试将UIViewAnimationOptionOverrideInheritedDuration添加到选项列表中(如果您还需要覆盖曲线,则可能还需要UIViewAnimationOptionOverrideInheritedCurve)。

+0

谢谢。这工作。我认为我没有嵌套它,但是在你提到这个之后,我做了一些观察,实际上它嵌套在另一个动画块中。感谢! – AaronG 2010-11-20 00:04:11