我正在尝试将一些使用 beginAnimations 的动画代码转换为使用动画 block 。我遇到的问题是,当我使用动画 block 时,动画运行得更快,而且我似乎无法通过更改持续时间值来调整速度
这是我最初的出发点:
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);
}];
我也试过这个,认为我需要一个完成 block ,但与我最初不使用 block 时的速度相比,速度仍然一样快。
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];
所有代码都在做同样的事情吗?我只是在这里遗漏了一些非常简单的东西吗?我认为增加持续时间会使鸟走得更慢,减少持续时间会使它走得更快,但是当使用 block 更改它时似乎没有任何影响。
如有任何指导,我们将不胜感激。
谢谢。
亚伦
最佳答案
如果您的动画 block 出现在另一个动画 block 中,-animateWithDuration:animations:
将继承外部 block 的持续时间。尝试将 UIViewAnimationOptionOverrideInheritedDuration
添加到选项列表(如果您也需要覆盖曲线,则可能添加 UIViewAnimationOptionOverrideInheritedCurve
)。
关于iphone - beginAnimations 和 using animations block 之间的动画速度不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228042/