我有一个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
作为动画的参数。我想知道我是否必须一直这样做,或者是否有一种方法可以动画而不指定toValue
和to
值,并且它会自动获取更改前的值以及后面的值和制作动画。
答案 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,并将它设置为当前值。
注意设置图层的实际路径非常重要,因此在完成动画时它不会恢复为原始路径。