我想动画一个简单的CALayer来上下移动以响应传入的数据(图形均衡器上的条形图)
CALayer应沿着底部保持固定,并在设置动画高度时上下移动。
任何人都可以建议最好的方法来实现这一目标,而不必为原点和坐标设置动画吗?
答案 0 :(得分:11)
如果您希望图层始终从底部增长和缩小,那么您应该在底部的图层上设置自己的anchorPoint
。锚点在图层单位坐标空间中指定,因此无论大小如何,X和Y的范围都在边界内0到1之间。
yourLayer.anchorPoint = CGPointMake(0.5, 1.0);
然后,对于动画,您只需为边界设置动画(或者甚至更好,您可以为"bounds.size.height"
设置动画,因为只有高度在变化):
// set the new bounds of yourLayer here...
CABasicAnimation *grow = [CABasicAnimation animationWithKeyPath:@"bounds.size.height"];
grow.fromValue = @0; // from no height
grow.toValue = @200; // to a height of 200
grow.duration = 0.5;
// add any additional animation configuration here...
[yourLayer addAnimation:grow forKey:@"grow the height of the layer"];