动画 CALayer - 缩放和滚动

Animate CALayer - zoom and scroll

我想用 CALayers 创建一个动画。 我有一个包含多个子层的父层,我想放大和滚动。

首先我尝试放大父图层,如下:

let transformAnimation = CABasicAnimation(keyPath: "bounds.size.width")
transformAnimation.duration = 2.3
transformAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transformAnimation.toValue =  650*2 
transformAnimation.beginTime = CACurrentMediaTime() + 4
transformAnimation.autoreverses = false
transformAnimation.isRemovedOnCompletion = false
transformAnimation.fillMode = kCAFillModeForwards
parentLayer.add(transformAnimation, forKey: "transformAnimation")
//
let transformAnimation2 = CABasicAnimation(keyPath: "bounds.size.height")
transformAnimation2.duration = 2.3
transformAnimation2.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transformAnimation2.toValue =  650*2 //CGAffineTransform.identity
transformAnimation2.beginTime = CACurrentMediaTime() + 4
transformAnimation2.autoreverses = false
transformAnimation2.isRemovedOnCompletion = false
transformAnimation2.fillMode = kCAFillModeForwards
parentLayer.add(transformAnimation2, forKey: "transformAnimation2")

应用动画时,子层的位置和大小不正确。我还应该对它们应用动画吗? 我该怎么做?

谢谢!

我猜你正在更新一层的 widthheight,你想知道子层的 bounds 是否也会改变。不,您可能还必须分别为它们制作动画。但不是启动单独的动画,您可以使用 CAAnimationGroup.

如果这些是视图,您可以定义约束来更优雅地协调子视图的大小调整。但是对于图层,你将不得不自己做。 (可能有你这样做的原因,但问题并不清楚。)