2017-01-06 29 views
2

我想用CALayers创建动画。 我有一个父层与多个子层,我想放大和滚动。Animate CALayer - 缩放和滚动

首先,我想放大父层,如下所示:

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") 

当应用动画,子层留在错误的位置和大小。我是否也应用动画给他们? 我该怎么做?

谢谢!

回答

1

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

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

+0

感谢Rob!我会尝试 – Carol