为了创建自定义视图,我有三个选项。
覆盖
func drawRect(_ rect:CGRect)
将子图层添加到视图的图层。
两者都做。
最佳做法是什么?如果我可以在子图层中绘制所有内容(使用更简单的API),为什么我会覆盖drawRect?
谢谢
答案 0 :(得分:2)
drawRect
中的渲染意味着您正在使用CPU使用Core Graphics绘制视图。
如果你可以使用CALayer
子图层的组合,那么这几乎总是更好的选择,因为繁重的工作由GPU完成。
最重要的是,在主线程上调用drawRect
,如果你的绘图代码不快,你的应用程序响应速度会慢一些(当然你可以使用后台线程来解决这个问题,但是您仍将使用CPU绘制位图。