swift UIView CALayer动画的暂停与继续
开始动画
UIView.animate(withDuration: 2.0, animations: { self.btnTopBall.centerY = self.view.height / 2 }) { (finish) in }
暂停动画
// 将当前时间CACurrentMediaTime转换为layer上的时间, 即将parent time转换为local time let pauseTime = self.btnTopBall.layer.convertTime(CACurrentMediaTime(), from: nil) // 设置layer的timeOffset, 在继续操作也会使用到 self.btnTopBall.layer.timeOffset = pauseTime // local time与parent time的比例为0, 意味着local time暂停了 self.btnTopBall.layer.speed = 0.0
继续动画
let pauseTime = self.btnTopBall.layer.timeOffset let timeSincePause = CACurrentMediaTime() - pauseTime self.btnTopBall.layer.timeOffset = 0.0 self.btnTopBall.layer.beginTime = timeSincePause self.btnTopBall.layer.speed = 1.0
网友评论