使自定义CALayer子类在添加到超级层后自动重绘

时间:2015-11-14 09:39:16

标签: ios core-animation calayer

我正在继承CALayer并在drawInContext:方法中进行自定义绘图。

问题是我需要在将子类的实例添加到超级层后手动调用setNeedsDisplay:,如:

MyCustomLayer *instance = [MyCustomLayer layer];
//do some configurations
[self.view.layer addSublayer:instance];
[layer setNeedsDisplay]; //required

或图纸不会发生。

但是当我使用buit-in CALayer子类(CATextLayerCAShapeLayer等)时,在将它们添加到超级层后不需要调用setNeedsDisplay: 。我可以让我的子类表现得像那些类吗?

1 个答案:

答案 0 :(得分:1)

您可以在init方法中自行致电displayIfNeeded,但更好的方法是needsDisplayForKey:的子类并返回YES的{​​{1}}密钥。当边界发生变化时(即首次添加到视图中时)重绘。