我想用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")
应用动画时,子图层的位置和大小都不正确。我还应该将动画应用到他们身上吗? 我怎么能这样做?
谢谢!
答案 0 :(得分:1)
我猜测您正在更新一个图层的width
和height
,并且您想知道子图层的bounds
是否也会发生变化。不,你可能也必须单独为它们制作动画。但是,不是启动单独的动画,而是使用CAAnimationGroup
。
如果这些是视图,您可以定义约束,以更优雅地协调子视图的大小调整。但是对于图层,你必须自己做这件事。 (可能有理由说你为什么这样做,但问题不明确。)