使自定义 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类(CATextLayer
、CAShapeLayer
等)时,不需要调用 setNeedsDisplay:
将它们添加到超级层后。我可以让我的子类表现得像那些 类 吗?
您可以为 @"transform"
键调用 displayIfNeeded
on yourself within the init
method, however better is to subclass needsDisplayForKey:
和 return YES
,这将在边界更改时重绘(即首次添加到视图时)。
我正在子类化 CALayer
并在 drawInContext:
方法中进行自定义绘图。
问题是我需要在将子类的实例添加到超层后手动调用 setNeedsDisplay:
,例如:
MyCustomLayer *instance = [MyCustomLayer layer];
//do some configurations
[self.view.layer addSublayer:instance];
[layer setNeedsDisplay]; //required
否则画不出来
但是当我使用内置 CALayer
sub类(CATextLayer
、CAShapeLayer
等)时,不需要调用 setNeedsDisplay:
将它们添加到超级层后。我可以让我的子类表现得像那些 类 吗?
您可以为 @"transform"
键调用 displayIfNeeded
on yourself within the init
method, however better is to subclass needsDisplayForKey:
和 return YES
,这将在边界更改时重绘(即首次添加到视图时)。