ios – 如何暂停和恢复UIView.animateWithDuration

前端之家收集整理的这篇文章主要介绍了ios – 如何暂停和恢复UIView.animateWithDuration前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个图像,我使用此代码为viewDidAppear设置动画:
  1. UIView.animateWithDuration(10.5,delay:0.0,options: [],animations:{
  2. self.myImage.transform = CGAffineTransformMakeTranslation(0.0,200)
  3. },completion: nil)

我想点击myPauseButton时暂停动画,如果我再次点击它,则恢复动画.

解决方法

暂停和恢复动画的2个功能,我从 here开始转换为Swift.
  1. func pauseLayer(layer: CALayer) {
  2. let pausedTime: CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer: nil)
  3. layer.speed = 0.0
  4. layer.timeOffset = pausedTime
  5. }
  6.  
  7. func resumeLayer(layer: CALayer) {
  8. let pausedTime: CFTimeInterval = layer.timeOffset
  9. layer.speed = 1.0
  10. layer.timeOffset = 0.0
  11. layer.beginTime = 0.0
  12. let timeSincePause: CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer: nil) - pausedTime
  13. layer.beginTime = timeSincePause
  14. }

我有一个按钮来暂停或恢复在viewDidLoad中初始化的动画:

  1. var pause = false
  2. override func viewDidAppear(animated: Bool) {
  3. super.viewDidAppear(animated)
  4. UIView.animateWithDuration(10.5,animations:{
  5.  
  6. self.image.transform = CGAffineTransformMakeTranslation(0.0,200)
  7. },completion: nil)
  8. }
  9.  
  10. @IBAction func changeState() {
  11. let layer = image.layer
  12. pause = !pause
  13. if pause {
  14. pauseLayer(layer)
  15. } else {
  16. resumeLayer(layer)
  17. }
  18. }

猜你在找的iOS相关文章