动画 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")
应用动画时,子层的位置和大小不正确。我还应该对它们应用动画吗?
我该怎么做?
谢谢!
我猜你正在更新一层的 width
和 height
,你想知道子层的 bounds
是否也会改变。不,您可能还必须分别为它们制作动画。但不是启动单独的动画,您可以使用 CAAnimationGroup
.
如果这些是视图,您可以定义约束来更优雅地协调子视图的大小调整。但是对于图层,你将不得不自己做。 (可能有你这样做的原因,但问题并不清楚。)
我想用 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")
应用动画时,子层的位置和大小不正确。我还应该对它们应用动画吗? 我该怎么做?
谢谢!
我猜你正在更新一层的 width
和 height
,你想知道子层的 bounds
是否也会改变。不,您可能还必须分别为它们制作动画。但不是启动单独的动画,您可以使用 CAAnimationGroup
.
如果这些是视图,您可以定义约束来更优雅地协调子视图的大小调整。但是对于图层,你将不得不自己做。 (可能有你这样做的原因,但问题并不清楚。)