动画CALayer - 缩放和滚动

时间:2017-01-06 00:29:43

标签: xcode core-animation zoom calayer

我想用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")

应用动画时,子图层的位置和大小都不正确。我还应该将动画应用到他们身上吗? 我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:1)

我猜测您正在更新一个图层的widthheight,并且您想知道子图层的bounds是否也会发生变化。不,你可能也必须单独为它们制作动画。但是,不是启动单独的动画,而是使用CAAnimationGroup

如果这些是视图,您可以定义约束,以更优雅地协调子视图的大小调整。但是对于图层,你必须自己做这件事。 (可能有理由说你为什么这样做,但问题不明确。)