Я создал функцию с 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
слоя в зависимости от времени задержки.
Но я не думаю, что это безопасный способ.Поэтому я хочу улучшить этот код.
Что вы обычно делаете в этом случае?