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:
用于绘制,而不是用于处理视图层次结构。