我正在继承CALayer
并在drawInContext:
方法中进行自定义绘图。
问题是我需要在将子类的实例添加到超级层后手动调用setNeedsDisplay:
,如:
MyCustomLayer *instance = [MyCustomLayer layer];
//do some configurations
[self.view.layer addSublayer:instance];
[layer setNeedsDisplay]; //required
或图纸不会发生。
但是当我使用buit-in CALayer
子类(CATextLayer
,CAShapeLayer
等)时,在将它们添加到超级层后不需要调用setNeedsDisplay:
。我可以让我的子类表现得像那些类吗?
答案 0 :(得分:1)
您可以在init
方法中自行致电displayIfNeeded
,但更好的方法是needsDisplayForKey:
的子类并返回YES
的{{1}}密钥。当边界发生变化时(即首次添加到视图中时)重绘。