2016-03-23 16 views
5

Tôi có một CollectionView và tôi muốn tạo một hình động bên trong CollectionViewCell do người dùng chọn. Tôi đã chọn sử dụng animateKeyframesWithDuration vì tôi muốn tạo một bước hoạt hình tùy chỉnh theo từng bước. Mã của tôi trông giống như sau:iOS dừng animateWithDuration trước khi hoàn thành

func animate() { 
    UIView.animateKeyframesWithDuration(1.0, delay: 0.0, options: .AllowUserInteraction, animations: {() -> Void in 
     UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5, animations: {() -> Void in 
      // First step 
     }) 
     UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: {() -> Void in 
      // Second step 
     }) 
     }) { (finished: Bool) -> Void in 
      if self.shouldStopAnimating { 
       self.loadingView.layer.removeAllAnimations() 
      } else { 
       self.animate() 
      } 
     } 
} 

Điều này được thực hiện trong CollectionViewCell tùy chỉnh khi được chọn. Vấn đề là tôi muốn dừng hoạt ảnh ngay lập tức tại một số điểm nhất định. Nhưng khi tôi làm điều đó, hoạt ảnh không dừng lại hoàn toàn, nó chỉ di chuyển hình động còn lại trên một ô khác (có lẽ là ô được sử dụng lại lần cuối?)

Tôi không hiểu tại sao điều này lại xảy ra. Tôi đã thử các cách tiếp cận khác nhau nhưng không ai trong số họ dừng thành công hoạt ảnh trước khi bước vào khối hoàn thành

Có ai có ý tưởng gì về điều này không?

+0

bạn đã tìm thấy một giải pháp cho việc này? – swalkner

Trả lời

0

Thay vì xóa hoạt ảnh khỏi lớp, bạn có thể thử thêm một hoạt ảnh khác với thời lượng rất ngắn để đặt thuộc tính chế độ xem mà bạn muốn ngừng hoạt ảnh.

Something như thế này:

if self.shouldStopAnimating { 
    UIView.animateWithDuration(0.01, delay: 0.0, options: UIViewAnimationOptions.BeginFromCurrentState, animations: {() -> Void in 
     //set any relevant properties on self.loadingView or anything else you're animating 
     //you can either set them to the final animation values 
     //or set them as they currently are to cancel the animation 
    }) { (completed) -> Void in 
    }; 
} 

This answer may also be helpful.

+0

Nó vẫn không hoạt động. Trên ô đã chọn của tôi, hoạt ảnh dừng lại như bình thường. Vấn đề thực sự là nó tiếp tục trên một tế bào khác. Tôi cũng đã thử với UIView.setAnimationsEnabled (sai) nhưng vô ích. Điều này thực sự gây phiền nhiễu – razvan

Các vấn đề liên quan