iOSにUIViewのページめくりアニメーションをしている間にい次の画像を非同期で取得してアニメーション終了後に表示させたいです。アニメーションをしている間に画像取得が終わらないかもしれないのでセマフォで待ち合わせさせようとしたのですが、うまく行きません。
swift
1semaphore=dispatch_semaphore_create(0) 2 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),{ 3 let ret=self.Load() 4 dispatch_async(dispatch_get_main_queue(), { 5 dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER) 6 self.Set() 7 self.iv.hidden=false 8 }) 9 }) 10 11 UIView.transitionWithView( 12 self.iv, // 対象のビュー 13 duration:5, // アニメーションの時間 14 options: UIViewAnimationOptions.TransitionCurlUp, // アニメーション変化オプション 15 animations: {() -> Void in 16 // アニメーションする処理 17 self.iv.hidden=true 18 }, 19 completion: {(finished: Bool) -> Void in 20 // アニメーション終了後の処理 21 dispatch_semaphore_signal(self.semaphore) 22 })
Load()で画像を取得してSet()でUIViewにセットします。
completationにブレイクを入れておくと、
非同期処理が無い場合には来るのに非同期処理を入れると
来ません。
どうしたら良いでしょうか?困っています。アドバイスお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/13 09:08