2017-12-17 4 views
0

https://imgur.com/cDyns2l의 UIView하지 removeFromSuperview 후 제거/애니메이션()

승 나는 애니메이션을 사용자 정의하여 UIView 있습니다.

fileprivate func startAnimation() { 
    UIView.animate(withDuration: self.scaleTime, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
     self.one.transform = CGAffineTransform(scaleX: self.scaleFactor, y: self.scaleFactor) 
    }) { (complete) in 
     UIView.animate(withDuration: self.scaleTime, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
      self.one.transform = CGAffineTransform(scaleX: 1, y: 1) 
      self.two.transform = CGAffineTransform(scaleX: self.scaleFactor, y: self.scaleFactor) 
     }) { (complete) in 
      UIView.animate(withDuration: self.scaleTime, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
       self.two.transform = CGAffineTransform(scaleX: 1, y: 1) 
       self.three.transform = CGAffineTransform(scaleX: self.scaleFactor, y: self.scaleFactor) 
      }) { (complete) in 
       UIView.animate(withDuration: self.scaleTime, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
        self.three.transform = CGAffineTransform(scaleX: 1, y: 1) 
        self.four.transform = CGAffineTransform(scaleX: self.scaleFactor, y: self.scaleFactor) 
       }) { (complete) in 
        UIView.animate(withDuration: self.scaleTime, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
         self.four.transform = CGAffineTransform(scaleX: 1, y: 1) 
         self.five.transform = CGAffineTransform(scaleX: self.scaleFactor, y: self.scaleFactor) 
        }) { (complete) in 
         UIView.animate(withDuration: self.scaleTime, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
          self.five.transform = CGAffineTransform(scaleX: 1, y: 1) 
         }) { (complete) in 
          self.startAnimation() 
         } 
        } 
       } 
      } 
     } 
    } 

} 

이 루프가 일어나서 원하는 효과를냅니다. 그러나 슈퍼 뷰에서 내 애니메이션보기를 제거하면 애니메이션이 계속되고 제거되지 않습니다.

+0

view.layer.removeAllAnimations() 애니메이션을 삭제 해 보았습니까? – Spads

답변

0

iOS 버전 10 이상을 타겟팅하는 경우 취소 가능한 애니메이션을 보려면 UIViewPropertyAnimator를 조사하는 것이 좋습니다. 애니메이션을 뒤집어서 로더에 좋을 수도 있습니다.

관련 문제