【发布时间】:2012-01-12 21:30:17
【问题描述】:
将视图添加为子视图与在该视图的 drawRect 方法中绘制视图有什么区别?
我使用这两种方法,但我想知道除了显而易见的之外,如果你在 drawRect 中这样做,它将是一个视图,而不是两个视图,或者添加为子视图更容易。是否有任何特定情况下您绝对应该使用其中一种?
【问题讨论】:
标签: iphone objective-c uiview subview drawrect
将视图添加为子视图与在该视图的 drawRect 方法中绘制视图有什么区别?
我使用这两种方法,但我想知道除了显而易见的之外,如果你在 drawRect 中这样做,它将是一个视图,而不是两个视图,或者添加为子视图更容易。是否有任何特定情况下您绝对应该使用其中一种?
【问题讨论】:
标签: iphone objective-c uiview subview drawrect
覆盖-drawRect: 可能是绘制复杂UITableViewCells 的好方法。将所有子视图合成并绘制为一个视图有助于极大地提高表格视图的滚动性能。
话虽如此,我通常会坚持使用可用的最高级别 API,只有在性能受到影响时才降级到较低级别。
【讨论】:
正如您所指出的,添加子视图更容易,我真的认为这在 90% 的情况下都没有竞争。您通常应该添加一个子视图并让库处理在正确位置绘制子视图。
我只使用-drawRect:在我的视图中完成自定义绘图,而不是绘制子视图,它会产生不必要的复杂性。如果您需要很多性能,-drawRect: 可以帮助您。此外,在简单绘图的情况下,-drawRect: 非常好,而不是制作几个子视图。但总的来说,只需添加一个子视图即可。
如果将来您决定希望这些子视图接收触摸事件或以交互方式处理事物,那么重构您的 -drawRect: 代码会更加困难。
【讨论】: