动画速度在beginAnimations和使用动画块之间是不同的

时间:2010-11-19 18:09:23

标签: iphone ipad animation ios core-animation

我正在尝试转换一些使用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];

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

任何指导都将不胜感激。

感谢。

亚伦

1 个答案:

答案 0 :(得分:4)

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