iOS中控制CALayer动画的播放与暂停

iOS中控制CALayer动画的播放与暂停

在iOS开发中,我们经常需要对视图进行动画处理。CALayer是Core Animation框架中的核心类之一,它可以用来创建和管理视图的动画效果。但是,有时候我们需要手动控制动画的播放与暂停,这就需要对CALayer进行分类扩展。

实现方法

我们可以通过扩展CALayer类,添加控制动画播放与暂停的方法。

import UIKit

extension CALayer {
    func pauseAnimation() {
        let pausedTime = convertTime(CACurrentMediaTime(), from: nil)
        speed = 0.0
        timeOffset = pausedTime
    }

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

使用示例

// 暂停动画
yourLayer.pauseAnimation()

// 恢复动画
yourLayer.resumeAnimation()

通过这个扩展,我们可以方便地控制CALayer上的动画播放与暂停。

zip
控制动画的CALayer分类.zip 预估大小:2个文件
file
CALayer+PauseAimate.m 719B
file
CALayer+PauseAimate.h 332B
zip 文件大小:1.6KB