2017-05-02 23 views
1

フェードアウトアニメーションでGoogleマップマーカーを削除しようとしています。そして、私はフェードアウトアニメーションのGoogleマップマーカーを削除する方法iOS swift 3?

CATransaction.begin() 
CATransaction.setAnimationDuration(1.0) 
myMarker.marker?.map = nil 
CATransaction.commit() 

CATransactionを試してみましたmyMarker.marker?.rotationのために働いたがフェードアウトアニメーションのために働いていません。私は今どうすればいい?

答えて

2

は、そのマーカーに依存し、あなたがする必要がありますそれらを同期して削除し、プロセスをバックグラウンドスレッドで実行する必要があります。しかし、バックグラウンドスレッドはUIを更新できません。

したがって、メインスレッドで行う必要があるUIの更新部分です。私がここで行ったように、

//Swift 3.1 
DispatchQueue.global(qos: .background).async { 

    //HERE MAY HAVE SOME DEPENDENT CODE 

    DispatchQueue.main.async { 
     UIView.animate(withDuration: 0.5, animations: { 
      self.myMarker.marker?.opacity = 0.0 
     }, completion: { (yes) in 
      self.myMarker.marker?.map = nil 
     }) 
    } 

    //HERE MAY HAVE SOME DEPENDENT CODE 

} 
2

オプションパラメータでお好みのいずれかの方法を使用して、アニメーションでそれを隠すために、このようにしてみてください。いくつかのマーカーまたは一部のコードスニペットがある場合

UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveEaseOut, animations: { 

     self.myMarker.opacity = 0.0 

}, completion: { (true) in 

     self.myMarker.map = nil    
}) 
+0

私はこのスニペットでもこれを試しましたが、これは動かない。 –

+0

あなたが検索すると、CATransactionには完結ブロックを直ちに呼び出すバグがあり、それが直ちに呼び出される理由を伝えるいくつかの条件がdocにあります。UIViewアニメーションを使ってマーカーを消すことは可能ですか?私はプロジェクトでこれを試して、上記のコードで与えられたUIViewアニメーションを使用してマーカーをフェードアウトします。 – NeverHopeless

+0

ありがとう@ NeverHopeless、私はその前にCatransactionがバグを知りませんでした。私は、UIViewアニメーションがCATransactionよりも良い方法だと感じています。 –