使用 drawRect、setNeedsDisplay 和 layoutSubViews

Posted

技术标签:

【中文标题】使用 drawRect、setNeedsDisplay 和 layoutSubViews【英文标题】:Using drawRect, setNeedsDisplay and layoutSubViews 【发布时间】:2010-08-23 12:14:47 【问题描述】:

是否有 等方法的基本规则? 我相信它们会对应用程序的性能产生不利影响。这些消息是否有任何首选的替代方案?

【问题讨论】:

【参考方案1】:

虽然这不是 this question 的完全相同,但我相信 my answer there 仍然适用。

总而言之,-drawRect: 将重绘视图中的内容,这是一项昂贵的操作。如果可以通过分层内容并根据需要移动或隐藏这些图层来避免重绘。

但是,这些重绘通常只有在快速连续完成许多重绘(例如尝试为内容制作动画时)才会对性能产生重大影响。一次性重绘静态 UI 元素不会明显减慢速度。

【讨论】:

以上是关于使用 drawRect、setNeedsDisplay 和 layoutSubViews的主要内容,如果未能解决你的问题,请参考以下文章

使用drawRect有什么影响

为啥尝试使用 drawRect 绘制彩色圆圈时颜色是透明的?

使用 CAGradientLayer 和 drawRect:(CGRect) 绘制顺序

iOS - UIGraphicsGetCurrentContext 可以在 drawRect 之外使用吗?

iOS 简单的使用drawRect 绘制

为啥 -drawRect 比为 UITableViews 使用 CALayers/UIViews 更快?