2017-01-06 7 views
2

CALayersでアニメーションを作成したいと思います。 私は複数のサブレイヤーを持つ親レイヤーを持っているので、ズームインしてスクロールしたいと思います。次のように、親の層の上にズームしようとしているアニメーションCALayer - ズームとスクロール

まずI:アニメーションが適用されると、サブ層は、間違った位置とサイズに残され

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を1つのレイヤーに更新していて、サブレイヤーのboundsも変更されるかどうかは疑問です。いいえ、おそらく別々にアニメーション化する必要があります。しかし、別々のアニメーションを開始するのではなく、CAAnimationGroupでそれらを実行することができます。

ビューの場合、サブビューのサイズ変更をより適切に調整する制約を定義できます。しかし、レイヤーでは、これを自分で行う必要があります。 (あなたがそれをやっている理由があるかもしれませんが、質問からは分かりません)

+0

ありがとうRob!私はそれを試みます – Carol

関連する問題