CAReplicatorLayer остановится и исчезнет?

У меня проблема с "отключением" анимации.

Я хочу полностью остановить анимацию и исчезнуть, пока я снова не вызову функцию startBusy(). Даже когда я установил opaticy на 0, у меня осталась одна точка.

Должен ли я удалить весь слой из поля просмотра и добавить его снова, если я хочу снова выполнить анимацию? Какая задача была бы правильной?

class BusyAnimation: CALayer {

var segmentCount = 10
var size = CGRect(x: 0, y: 0, width: 50, height: 50)

let replicator = CAReplicatorLayer()
let circle = CALayer()

func startBusy(){

    replicator.frame = size
    replicator.instanceCount = segmentCount
    replicator.instanceDelay = 2/CFTimeInterval(segmentCount)
    let angle = CGFloat.pi  * 2 / CGFloat(segmentCount)
    replicator.instanceTransform = CATransform3DMakeRotation(angle, 0, 0, 1)
    replicator.speed = 1
    replicator.opacity = 1
    replicator.repeatCount = Float.infinity

    circle.frame = CGRect(x: 0, y: 0, width: 5, height: 5)
    circle.cornerRadius = 2.5
    circle.backgroundColor = UIColor.gray.cgColor
    circle.opacity = 1
    circle.speed = 1

    let fade = CABasicAnimation(keyPath: "opacity")
    fade.fromValue = 1
    fade.toValue = 0
    fade.duration = 2
    fade.repeatCount = 1000

    circle.add(fade, forKey: "fade")

    replicator.addSublayer(circle)

    self.addSublayer(replicator)
}

func stopBusy(){
    replicator.opacity = 0
    replicator.speed = 0
    circle.opacity = 0
    circle.speed = 0
}

}

0 ответов

Другие вопросы по тегам