如何用动画从左到右改变CALayer的宽度?

时间:2016-05-31 10:49:34

标签: ios swift calayer cabasicanimation

我在CALayer中添加了UIView。 它有一个fillColor。 它也有一些宽度。 我希望该图层的宽度从零扩展到实际宽度,CABasicAnimation从左到右。

怎么做?

2 个答案:

答案 0 :(得分:2)

尝试动画图层的边界:

let a = CALayer()
a.bounds = CGRect(x: 0, y: 0, width: 100, height: 40)
a.position = CGPoint(x: 20, y: 20)
a.anchorPoint = CGPoint(x: 0, y: 0)
view.layer.addSublayer(a)

let anim = CABasicAnimation(keyPath: "bounds")
anim.duration = 2
anim.fromValue = NSValue(CGRect: CGRect(x: 0, y: 0, width: 0, height: 30))
anim.toValue = NSValue(CGRect: CGRect(x: 0, y: 0, width: 100, height: 30))
a.addAnimation(anim, forKey: "anim")

这对我有用。只是不要忘记设置achor点。

答案 1 :(得分:0)

回答Swift 3。 为了使图层的宽度从左(不是从中心!)改变到右边,我使用了以下方法:

我有一个名为“layer”的图层,我想将其宽度从0更改为myWidth

 layer.position = CGPoint(x: 0, y: 0)
 layer.anchorPoint = CGPoint(x: 0, y: 0.5)
 let layerAnimation = CABasicAnimation(keyPath: "bounds.size.width")
 layerAnimation.duration = 2
 layerAnimation.fromValue = 0
 layerAnimation.toValue = myWidth
 layer.add(layerAnimation, forKey: "anim")