2017-05-02 2 views
1

페이드 아웃 애니메이션으로 내 Google지도 아이콘을 삭제하려고합니다. 그리고 페이드 아웃 애니메이션 iOS 신속한 3 Google지도 아이콘을 제거하는 방법?

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에 완료 블록을 즉시 호출하는 버그가 있으며 문서에서 즉시 호출되는 이유를 알려주는 조건이 있습니다. UIView 애니메이션을 사용하여 마커를 페이드 아웃 할 수 있습니까? 나는 위의 코드에서 주어진 UIView 애니메이션을 사용하여 프로젝트와 마커에서 이것을 시도했다. – NeverHopeless

+0

Thanks @ NeverHopeless, 나는 Catransaction에 버그가 있다는 것을 알지 못했습니다. UIView 애니메이션이 CATransaction보다 더 좋은 방법이라고 생각합니다. –

관련 문제