如何使用来自底部而不是顶部的原点来设置CALayer的高度?

时间:2014-04-22 10:16:39

标签: ios core-animation calayer

我想动画一个简单的CALayer来上下移动以响应传入的数据(图形均衡器上的条形图)

CALayer应沿着底部保持固定,并在设置动画高度时上下移动。

任何人都可以建议最好的方法来实现这一目标,而不必为原点和坐标设置动画吗?

1 个答案:

答案 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"];