iPhone - UIView添加了一个subView vs drawRect?

时间:2012-01-12 21:30:17

标签: iphone objective-c uiview subview drawrect

在视图的drawRect方法中添加视图作为子视图VS绘制视图有什么区别?

我使用这两种方法,但我想知道除了明显的例如,如果你在drawRect中它将是一个单独的View,而不是两个视图,或者添加为子视图更容易。是否有任何特定的情况你绝对应该使用其中一个?

2 个答案:

答案 0 :(得分:4)

覆盖-drawRect:可能是绘制复杂UITableViewCell的好方法。将所有子视图合成并绘制为一个视图有助于表格查看滚动性能无法估量。

话虽如此,我通常会坚持使用最高级别的API,并且只有在性能受损时才会降低到较低级别。

答案 1 :(得分:4)

如你所指出的那样,添加子视图会更容易,我确实认为这在90%的情况下都没有竞争。您通常应该添加一个子视图,让库处理子视图在正确位置的绘制。

我只使用-drawRect:在我的视图中完成自定义绘图,但不绘制子视图,这会产生不必要的复杂性。如果您需要很多性能,-drawRect:可以帮助您。此外,在简单绘图的情况下,-drawRect:非常好,而不是制作几个子视图。但总的来说,只需添加子视图就可以了。

如果将来您决定要让这些子视图接收触摸事件或以交互方式处理事物,则重构-drawRect:代码会更加困难。