2017-01-06 27 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