如果我将属性两次设置为动画块内的两个不同值,会发生什么情况?如果我执行以下伪代码:动画设置属性两次
myView.frame = CGRectMake(0, 0, 50, 50); // state 0
[UIView beginAnimations:@"showBanner" context:NULL];
{
[UIView setAnimationDuration:2];
myView.frame = CGRectMake(0, 20, 50, 50); // state 1
myView.frame = CGRectMake(0, 10, 50, 50); // state 2
}
[UIView commitAnimations];
应该得到以下哪个结果?
- 框架通过状态1从状态0到动画状态2
- 帧动画从状态0直接到状态2,忽略状态1
我期望结果#2至因为我认为动画提交时会记录属性的状态。我在我的应用程序中看到一个行为,似乎表明结果#1正在发生,因此我的问题。
有趣的答案。如果是这种情况,第一次状态变化发生在图书馆内某处,我的动画注定会看起来很糟糕? –
不一定。根据库的功能,您可以在自己的beginAnimation/commitAnimation事务中包装第一个状态更改。在该事务中,您可以调用setAnimationDelegate:和setAnimationDidStopSelector:来标识第一个动画完成后应该调用的方法。在该方法中,您可以触发第二个状态转换的动画。 – cduhn
理想情况下,我想完全忽略第一个状态转换。这实际上是修改另一个属性造成的连锁效应,它导致从0到2的期望转换看起来很糟糕。有任何想法吗? –