0
直前に作業が行われているため、(非常にわずかに)同期が外れている(遅い)アニメーションがあります。(animateWithDuration)完了のようなスレッドソリューション:^
ダミーのanimateWithDurationメソッド(duration:0)のcompletion:^メソッド内にアニメーション[パート3]を配置することでこの問題を解決しました。
それは完璧このように動作します:
[method]
[Part 1. create series of UIImages (using CGContext) and UIImageViews /]
[Part 2. UNNECESSARY animateWithDuration]
completion:^(BOOL finished) {
[Part 3. Record NSDate /]
[Part 3. Run animations based on NSDate start time /]
}
[/Part 2.]
[/method]
は、私は、この不要な「animateWithDuration」の代わりに何を使うべきでしょうか?同様に単純ですが正しいものがありますか?
(私は__blockポインタを使用するために私が必要となります[第1部]のスレッドブロックを使用する必要はありません。可能ならば、私は、上記1のようにシンプルなソリューションを求めています。)
ブロック内の持続時間を持つダミーアニメーションの内部でそのコードを実行する関数を作成するだけです。 – NorthBlast
シンプルコードを書く!=正しいコードを書く。あなたはあなたの問題の回避策を見つけましたが、それは機能しますが、より多くの労力と時間を要したとしても、より良い習慣を常に選択するべきです。 私はあなたに似たような答えを求めたことは知っていますが、適切なスレッディングを使った解決策はあなたの答えであり、これらの解決策ではないことに注意してください。 – erenkabakci
ここで同期しようとしているもの、または「アニメーションを実行する」という意味は明確ではありませんが、NSDateはおそらく間違ったツールです(スレッドは間違ったツールです。 "糸")。ウォールクロックに同期した画像を表示しようとすると(たとえば、オーディオとの同期を保つため)、AVPlayerやCADisplayLinkのようなリアルタイムシステムが必要になります。あなたが解決しようとしている問題を説明するのに役立ちます。アニメーショントランザクションが必要な場合もあります。 –