drawRect和addSubview:自定义绘图会影响哪些视图?

如果我有一个实现了drawRect和controller方法的UIView的自定义子类,使用addSubview在这个自定义视图中创build视图层次结构,那么drawRect如何与这些子视图交互? 它是否重新创build整个子类的视图层次结构,并删除任何现有的子视图? 还是忽略子视图,只重绘一个特定的视图/子视图?

以编程方式添加和删除drawRect中的子视图是否可以接受?

drawRect 用于在视图中绘制您的内容。

无论是绘制整个视图还是其中的一部分:取决于您的实现。 如果你想做任何优化是一个好主意,检查当你的视图调用drawRect并相应地调整代码(也许你只想更新视图的一部分,也许你不想画所有的时间等) 。 这取决于你的需求

我不认为在drawRect添加/删除子视图是一个好主意,因为这种方法将在几种情况下调用,我敢说这不是你想要的:)

相反,你可以尝试这样的事情:

 [myView addSubview:aSubview]; [myView setNeedsDisplay]; //or calculate the needed display rect by yourself and then [myView setNeedsDisplayInRect:aRect]; 

-drawRect:不与子视图交互 它将所有发送的视图都绘制在想要绘制的矩形中。

以编程方式添加和删除drawRect中的子视图是否可以接受?

没有。 -drawRect:用于绘制,而不是用于处理视图层次结构。