创建自定义 UIView 的最佳实践是什么?
What is the best practice for creating custom UIView's?
对于创建自定义视图,我有三个选项。
覆盖
func drawRect(_ rect: CGRect)
向视图的图层添加子图层。
两者都做。
最佳做法是什么?如果我可以在子层中绘制所有内容(更简单 API),为什么我要覆盖 drawRect?
谢谢
在 drawRect
中渲染意味着您正在使用 CPU 使用 Core Graphics 绘制视图。
如果您可以使用 CALayer
个子层的组合,那么这几乎总是更好的选择,因为繁重的工作随后由 GPU 完成。
最重要的是,drawRect
会在主线程上调用,如果您的绘图代码速度不快,您的应用程序的响应速度会较慢(当然您可以使用后台线程来解决此问题,但您仍将使用 CPU 来绘制位图)。
对于创建自定义视图,我有三个选项。
覆盖
func drawRect(_ rect: CGRect)
向视图的图层添加子图层。
两者都做。
最佳做法是什么?如果我可以在子层中绘制所有内容(更简单 API),为什么我要覆盖 drawRect?
谢谢
在 drawRect
中渲染意味着您正在使用 CPU 使用 Core Graphics 绘制视图。
如果您可以使用 CALayer
个子层的组合,那么这几乎总是更好的选择,因为繁重的工作随后由 GPU 完成。
最重要的是,drawRect
会在主线程上调用,如果您的绘图代码速度不快,您的应用程序的响应速度会较慢(当然您可以使用后台线程来解决此问题,但您仍将使用 CPU 来绘制位图)。