アニメーションブロック内で2つの異なる値にプロパティを2回設定するとどうなりますか?次の擬似コードを実行すると:アニメーション中にプロパティを2回設定する
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からアニメーションフレームが状態0から直接、状態2、無視状態にアニメーション2
アニメーションがコミットされたときにプロパティの状態が記録されると思うからです。私は結果#1が起こっていることを示すように見える私のアプリで動作を得ている、したがって私の質問。
興味深い回答です。それが事実で、最初の状態変化が図書館のどこかで起こる場合、私のアニメーションは悪く見えるようになりますか? –
必ずしもそうではありません。ライブラリの機能に応じて、最初の状態変更を独自のbeginAnimation/commitAnimationトランザクションでラップすることができます。そのトランザクション内で、setAnimationDelegate:およびsetAnimationDidStopSelector:を呼び出して、最初のアニメーションが完了した後に呼び出されるメソッドを識別できます。この方法では、2番目の状態遷移のためにアニメーションをトリガーすることができます。 – cduhn
理想的には、最初の状態遷移を完全に無視したいと思います。それは実際に別のプロパティを変更することによるノックオン効果であり、0から2への希望の遷移が悪く見える原因となっています。何か案は? –