Как правильно оформить слой до начала анимации ядра? - PullRequest
0 голосов
/ 23 октября 2018

Я создал функцию с Core Animation, которая анимирует высоту слоя от 0 до N. Она задерживается.

extension CALayer {
    func animate(to height: CGFloat, duration: Double, delay: Double) {
        let animation: CABasicAnimation = .init(keyPath: "bounds.size.height")

        animation.fromValue = 0
        animation.toValue = height
        animation.beginTime = CACurrentMediaTime() + delay
        animation.duration: duration
        animation.timingFunction = .init(name: kCAMediaTimingFunctionEaseInEaseOut)

        // I want to improvement this part.
        //
        // self.isHidden = true
        //
        // DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
        //     self.isHidden = false
        // }

        self.bounds.size.height = height
        self.add(animation, forKey: "bounds.size.height")
    }
}

И слой хорошо трансформируется во время анимации, но он возвращается к исходной высоте до начала времении после финиша.Поэтому мне пришлось установить isHidden слоя в зависимости от времени задержки.

Но я не думаю, что это безопасный способ.Поэтому я хочу улучшить этот код.

Что вы обычно делаете в этом случае?

1 Ответ

0 голосов
/ 23 октября 2018

Попробуйте установить animation.fillMode = .backwards.Я думаю, что анимация будет применять fromValue к слою, пока не будет достигнут beginTime анимации.

...