そのコードスニペットで実際に行われている処理は非常に重要です。アニメーションはあるビューから別のビューに移行しています。最初のビューは置き換えられ、現在表示されているビューを追跡するためにブール値が設定されます。ブール値は完了ブロックに設定されます。この場合
[UIView transitionFromView:(displayingPrimary ? primaryView : secondaryView)
toView:(displayingPrimary ? secondaryView : primaryView)
duration:1.0
options:(displayingPrimary ? UIViewAnimationOptionTransitionFlipFromRight :
UIViewAnimationOptionTransitionFlipFromLeft)
completion:^(BOOL finished) {
if (finished) {
displayingPrimary = !displayingPrimary;
}
}];
、アニメーションが(何らかの理由で)完全に、そして意見が交換されていないいない、とあなたは絶対に
displayingPrimary
の値を反転させたくない、あなたのために」場合あなたの身分の記録が不正確になります。そのため、この場合には
finished
フラグがチェックされています。
このガイドの他のコードサンプルの大部分(すべてではないにしても)でフラグがチェックされていないことに注意してください - そのような場合(最初のの値はではありません。アニメーションの正常終了に依存します)。
完成したブールが実際には0になっても実行できるようです。なぜそれが起こるだろうか?それは「完了」ブロックなので、前のブロックが実際に完了した場合にのみ実行されますか? – johnbakers
これらのメソッドの1つで新しいアニメーションを開始すると、新しいアニメーションを最初に中断させるオプションがあります。ビューとのユーザーの対話を許可するオプションもあり、アニメーションをキャンセルする機会があります。 –
docによると、transitionFromViewは、アニメーションの開始時にtoViewを追加し、アニメーションの終了時にsuperViewからfromViewを取得します。終了した場合は、fromViewとtoViewの両方がfalseであることを意味しますか?私の場合、私は両方がなくなっているケースを見たので。 –