在核心动画开始之前进行图层样式设置的正确方法是什么?

时间:2018-10-23 01:53:25

标签: ios swift core-animation calayer

我用Core Animation创建了一个函数,该函数将图层高度从0设置为N,并且可以延迟。

] st

该层在动画过程中的变形效果很好,但是在开始时间之前和结束之后它会返回到原始高度。因此,我不得不根据时间设置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") } } 层来延迟。

但是我认为这不是一种安全的方法。所以我想改进该代码。

在这种情况下,您通常做什么?

1 个答案:

答案 0 :(得分:1)

尝试设置animation.fillMode = .backwards。我认为这将使动画将其fromValue应用于图层,直到达到动画的beginTime