将subLayer的路径更改为另一个路径时创建动画

时间:2015-06-28 05:49:18

标签: ios swift cabasicanimation

我有一个UIView及其图层,我在其中添加了一个CAShapeLayer作为带路径的subLayer。

当我点击UIButton时,我用另一条路径更改了subLayer的路径。

我该如何设置动画?

一旦路径发生变化,是否可以制作动画?

我试图添加:

let caAnimation = CABasicAnimation()
caAnimation.keyPath = "path"
caAnimation.duration = 2

shapeLayer.addAnimation(caAnimation, forKey: "path")

在我的init(coder aDecoder: NSCoder)的{​​{1}}方法中,以便在UIView方法中更改路径时生成动画,但它不起作用。

我做错了什么?

编辑:

我添加了layoutSubviews()fromValue作为动画的参数。我想知道我是否必须一直这样做,或者是否有一种方法可以动画而不指定toValueto值,并且它会自动获取更改前的值以及后面的值和制作动画。

1 个答案:

答案 0 :(得分:0)

这是客观的,但我认为你会得到它的要点。

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"path"];
anim.duration = 2.0;

UIBezierPath *path = myPath;
anim.fromValue = (__bridge id)layer.path;
anim.toValue = (__bridge id)path.CGPath;
layer.path = path.CGPath;
[layer addAnimation:anim forKey:@"path"];

如果我没弄错,你也可以将toValue或fromValue保留为nil,并将它设置为当前值。

注意设置图层的实际路径非常重要,因此在完成动画时它不会恢复为原始路径。