【发布时间】:2013-11-12 07:48:57
【问题描述】:
如何在不使用块结构的情况下为 UIView 设置动画?我只需要强制动画在调用后立即执行,我没有将程序的其余部分放在基于代码结构的完成块中的奢侈。
具体来说,现在,这就是正在发生的事情
while (actionsRemaining)
{
[self performDesiredAnimation];
....computation ....
[barWidget decreaseValueTo:resultOfComputation];
}
当我运行此代码时,所有 [performDesiredAnimation] 动画同时发生,大约 10 个 barWidgets 全部同时减少。我想要的是:
performDesiredAnimation1 --> barWidget 减少 --> performDesiredAnimation2 --> barWidget 减少 --> performDesiredAnimation3 --> barWidget 减少 --> ...但是未知次数。
我不知道多少次,因为如果 barWidget 减小到超过某个值,动作将从 actionsRemaining 中删除,即循环数将取决于中间计算。
更简单地说,我想要的结果与我现在只调用循环的一次迭代时看到的结果相同
[self performDesiredAnimation];
....computation ....
[barWidget decreaseValueTo:resultOfComputation];
,然后是第二次迭代,然后是第三次,所有这些都是孤立的。现在,如果我注释掉循环,动画看起来还不错,但是当我将循环保留在那里时,它们都会一起粉碎。我只想让动画从一个迭代到另一个迭代顺序执行,而不是一次全部执行。
【问题讨论】:
-
建议使用块,因为它将在另一个线程上执行。 developer.apple.com/library/ios/documentation/windowsviews/…
-
在this question中总是有超级老式的开始和提交动画风格
-
我知道,但我无法将我的动画代码转换成块。一方面,其中一个动画小部件具有我无法访问和修改的动画代码。其次,我自己的动画发生在一个for循环中,我不能轻易地使用块结构来告诉它执行下一个动画,因为它发生在下一次迭代中。
-
“我没有根据代码结构将程序的其余部分放在完成块中的奢侈。”我不明白你这是什么意思。你到底想达到什么目的?使用积木有什么不同?
-
请记住,您可以从块内部调用“自己”的方法。
标签: ios objective-c animation