ブロック構造を使用せずに UIView をアニメーション化するにはどうすればよいですか? アニメーションが呼び出された直後に強制的に実行する必要があるだけで、プログラムの残りの部分をコード構造に基づいて完了ブロックに入れる余裕はありません。
具体的に言うと、今、これが起こっていることです
while (actionsRemaining)
{
[self performDesiredAnimation];
....computation ....
[barWidget decreaseValueTo:resultOfComputation];
}
このコードを実行すると、すべての [performDesiredAnimation] アニメーションが同時に発生し、10 個ほどの barWidgets がすべて同時に減少します。私が欲しいのは:
performDesiredAnimation1 --> barWidget が減少します --> performDesiredAnimation2 --> barWidget が減少します --> performDesiredAnimation3 --> barWidget が減少します --> ... ただし、不明な回数が多くなります。
barWidget が特定の値を超えて減少すると、actionsRemaining からアクションが削除されるため、回数はわかりません。つまり、ループの回数は中間計算に依存します。
もっと簡単に言えば、私が望むのは、ループの反復を 1 回だけ呼び出したときに今見ているのと同じ結果です。
[self performDesiredAnimation];
....computation ....
[barWidget decreaseValueTo:resultOfComputation];
、続いて 2 番目の反復、3 番目の反復が続き、すべてが分離されています。今のところ、ループをコメント アウトするとアニメーションは問題ないように見えますが、ループをそのままにしておくと、アニメーションがすべて壊れてしまいます。アニメーションを一度にではなく、繰り返しから順に実行したいだけです。