将速度设置为0

时间:2018-07-20 15:51:50

标签: swift core-animation calayer appkit caanimation

当我试图暂停我的CAAnimations时,有时会遇到一个问题,我想知道是否有人遇到类似的问题,甚至找到了原因。

我正在使用Core Animation用Ken Burns效果对图像进行动画处理。当某些用户交互需要我执行以下操作时,我将使用这段代码(我相信这是Apple所说的实际方法)来暂停和恢复动画:

extension CALayer {

    func pause() {
        let pausedTime = self.convertTime(CACurrentMediaTime(), from: nil)
        self.speed = 0.0
        self.timeOffset = pausedTime
    }

    func resume() {
        let pausedTime = self.timeOffset
        self.speed = 1.0
        self.timeOffset = 0.0
        self.beginTime = 0.0
        let timeSincePause = self.convertTime(CACurrentMediaTime(), from: nil) - pausedTime
        self.beginTime = timeSincePause
    }

}

有时候,当我尝试暂停动画时,图像停止了,但是透明版本似乎一直在顶部移动,就像没有改变图层的速度一样完成动画。

我并不完全知道如何重现它,但是当我将大图像(15MP及更大)设置为图层的内容而不是小图像时,似乎通常会发生这种情况。

也许有人有主意。如果您对此还有其他疑问,请随时提问。一年来,这一直是我应用程序中的错误,每次尝试修复它时,我都不得不放弃,不知道是什么原因造成的。

如果有帮助,我会在macOS而非iOS上运行我的应用程序。

0 个答案:

没有答案