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

make custom CALayer subclass automatically redraw itself after being added to a super layer

我正在子类化 CALayer 并在 drawInContext: 方法中进行自定义绘图。

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

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

否则画不出来

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

您可以为 @"transform" 键调用 displayIfNeeded on yourself within the init method, however better is to subclass needsDisplayForKey: 和 return YES,这将在边界更改时重绘(即首次添加到视图时)。