Продолжить анимацию из текущего состояния при нажатии - PullRequest
0 голосов
/ 24 августа 2018

У меня есть вращающаяся анимация, и я хочу, чтобы анимация продолжалась из состояния, когда она нажата.Для этого я попробовал этот код:

if let presentation = plus.presentation() {
    object.frame = presentation.frame
    object.setValue(presentation.value(forKeyPath: animation.keyPath!), forKey: animation.keyPath!) // doesn't do much it seems
    object.transform = presentation.transform
}

Но когда объект снова нажимается, он начинает вращаться с другого якоря, кажется:

normal (нормальный)

tapped (при нажатии)


func rotateObject() {
    let animation = CABasicAnimation(keyPath: "transform.rotation")

    animation.toValue = CGFloat.pi * 2

    let curve = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)

    animation.timingFunction = curve
    animation.duration = 1.5

    if let presentation = plus.presentation() {
        object.frame = presentation.frame
        object.setValue(presentation.value(forKeyPath: animation.keyPath!), forKey: animation.keyPath!)
        object.transform = presentation.transform
    }

    object.removeAllAnimations()

    object.add(animation, forKey: animation.keyPath)
}

Что я должен использовать, чтобы получить состояние от вращениякогда постучал?

...