2017-01-03 1 views
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のようにシンプルなソリューションを求めています。)

+0

ブロック内の持続時間を持つダミーアニメーションの内部でそのコードを実行する関数を作成するだけです。 – NorthBlast

+1

シンプルコードを書く!=正しいコードを書く。あなたはあなたの問題の回避策を見つけましたが、それは機能しますが、より多くの労力と時間を要したとしても、より良い習慣を常に選択するべきです。 私はあなたに似たような答えを求めたことは知っていますが、適切なスレッディングを使った解決策はあなたの答えであり、これらの解決策ではないことに注意してください。 – erenkabakci

+0

ここで同期しようとしているもの、または「アニメーションを実行する」という意味は明確ではありませんが、NSDateはおそらく間違ったツールです(スレッドは間違ったツールです。 "糸")。ウォールクロックに同期した画像を表示しようとすると(たとえば、オーディオとの同期を保つため)、AVPlayerやCADisplayLinkのようなリアルタイムシステムが必要になります。あなたが解決しようとしている問題を説明するのに役立ちます。アニメーショントランザクションが必要な場合もあります。 –

答えて

0

私が持っています私はそこに期待していた簡単かつ迅速なものかもしれませんが、少なくとも、これは動作します

dispatch_group_t 
and 
dispatch_queue_t 

を使用することにしました。 ご意見ありがとうございます。

関連する問題