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

Ios 使自定义CALayer子类在添加到超级层后自动重新绘制自身,ios,core-animation,calayer,Ios,Core Animation,Calayer,我正在子类化CALayer并在drawInContext:方法中进行自定义绘图 问题是,在将子类的实例添加到超层后,我需要手动调用setNeedsDisplay:,例如: MyCustomLayer *instance = [MyCustomLayer layer]; //do some configurations [self.view.layer addSublayer:instance]; [layer setNeedsDisplay]; //required 否则,绘图将不会发生 但是

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

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

MyCustomLayer *instance = [MyCustomLayer layer];
//do some configurations
[self.view.layer addSublayer:instance];
[layer setNeedsDisplay]; //required
否则,绘图将不会发生


但是,当我使用内置的
CALayer
子类(
CATextLayer
CAShapeLayer
等)时,将它们添加到超级层后,就不需要调用
setNeedsDisplay:
。我可以让我的子类的行为类似于那些类吗?

你可以在
init
方法中调用你自己,但是更好的方法是对
@“transform”
键进行子类化并返回
YES
,当边界更改时(即首次添加到视图中时),该键会重新绘制。

而不是你的回答。我最终使用了needsDisplayForKey:并检查了“transform”和“bounds”键。对我来说,调用DisplayIfRequired或只检查“transform”键对某些边缘情况不起作用。