Получите UIVIew от CAAnimation - PullRequest
       22

Получите UIVIew от CAAnimation

1 голос
/ 13 марта 2019

Я пытаюсь получить UIView объект из CAAnimation. Я реализовал следующий CAAnimationDelegate метод

public func animationDidStop(_ animation:CAAnimation, finished:Bool) {
     // Need respective View from "animation:CAAnimation"
}

Этот класс будет выполнять несколько анимаций с разными видами. Поэтому мне нужно выяснить, какая анимация View завершена в этом методе делегата. Пожалуйста, укажите мне, есть ли возможность получить вид из этой анимации.

1 Ответ

1 голос
/ 13 марта 2019

Как предложил Мэтт, вы можете узнать, какая анимация была завершена.

Прежде всего вам нужно добавить другое значение ключа к вашей анимации, как показано ниже:

let theAnimation = CABasicAnimation(keyPath: "opacity")
theAnimation.setValue("animation1", forKey: "id")
theAnimation.delegate = self

let theAnimation2 = CABasicAnimation(keyPath: "opacity")
theAnimation2.setValue("animation2", forKey: "id")
theAnimation2.delegate = self

И в animationDidStop методе вы можете идентифицировать анимации:

func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {

    if let val = anim.value(forKey: "id") as? String {
        switch val {
        case "animation1":
            print("animation1")
        case "animation2":
            print("animation2")
        default:
            break
        }
    }
}

Я взял ЭТОГО ответа и преобразовал код Objective c в swift с switch case.

...