是否应该从drawRect()或调用CAShapeLayers的图纸layoutSubviews()?
根据Apple关于UIViews的文档,应该放置绘图操作drawRect().
然而,在Kevin Cathey的WWDC会话中并非如此:Interface Builder中的新功能(他演示了构建可在Interface Builder中访问的自定义UIView的过程).
在他的演示中,他执行了视图的绘制layoutSubviews,而不是drawRect.
他的解释是:
如果我要实现drawRect,那将无法让我们获得最佳性能; 然而,使用子图层和子视图会让我们获得非常好的表现.
从我到目前为止在StackOverflow上看到的内容来看,覆盖该drawRect()方法似乎会导致性能降低.这部分是由于setNeedsDisplay触发手动重绘是昂贵的.
但仔细查看Apple文档和实际应用程序.drawRect()应该负责绘制视图和layoutSubviews()处理定位是有道理的.