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

我有一个图像,我使用此代码为viewDidAppear设置动画:
UIView.animateWithDuration(10.5,delay:0.0,options: [],animations:{
self.myImage.transform = CGAffineTransformMakeTranslation(0.0,200)
},completion: nil)

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

解决方法

暂停和恢复动画的2个功能,我从 here开始转换为Swift.
func pauseLayer(layer: CALayer) {
    let pausedTime: CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer: nil)
    layer.speed = 0.0
    layer.timeOffset = pausedTime
}

func resumeLayer(layer: CALayer) {
    let pausedTime: CFTimeInterval = layer.timeOffset
    layer.speed = 1.0
    layer.timeOffset = 0.0
    layer.beginTime = 0.0
    let timeSincePause: CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer: nil) - pausedTime
    layer.beginTime = timeSincePause
}

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

var pause = false
override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    UIView.animateWithDuration(10.5,animations:{

        self.image.transform = CGAffineTransformMakeTranslation(0.0,200)
        },completion: nil)
}

@IBAction func changeState() {
    let layer = image.layer
    pause = !pause
    if pause {
        pauseLayer(layer)
    } else {
        resumeLayer(layer)
    }
}

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...