我正在尝试转换一些使用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];
代码是否都做同样的事情?我在这里错过了一些非常简单的东西吗?我认为增加持续时间会使鸟变得更慢而减少它会使它变得更快,但是当使用块改变它时似乎没有任何影响。
任何指导都将不胜感激。
感谢。
亚伦
答案 0 :(得分:4)
如果您的动画块发生在另一个动画块中,-animateWithDuration:animations:
将继承外部块的持续时间。尝试将UIViewAnimationOptionOverrideInheritedDuration
添加到选项列表中(如果您还需要覆盖曲线,则可能UIViewAnimationOptionOverrideInheritedCurve
)。