我试图找到其他原因,为什么不透明视图优于透明视图。然而,我提出的唯一明智的理由是,不透明的背后的视图不需要在那个地方绘制其内容。
这是一个错误的假设,还有其他充分的理由吗?
感谢。
答案 0 :(得分:3)
这是正确的假设。直接来自Apple文档:
opaque
确定的布尔值 接收器是否不透明。
@property(nonatomic, getter=isOpaque) BOOL opaque
<强>讨论强>
此属性提供绘图系统的提示 至于如何对待观点。如果 设置为
YES
,绘图系统处理 视图完全不透明,允许 绘图系统优化一些 绘图操作和改进 性能。如果设置为NO
,则绘图 系统正常组合视图 与其他内容。默认值 这个属性是YES
。预计不透明视图将填补其空白 完全不透明的边界 内容 - 即内容应该 具有
1.0
的alpha值。如果 视图是不透明的,也不是 填写其边界或包含完整或 部分透明的内容, 结果是不可预测的。你应该 始终设置此属性的值 如果视图完全或是,则NO
部分透明。
答案 1 :(得分:3)
除了能够避免绘制背景视图外,还有一些其他原因,它更快,与合成相关:
1)无需混合前景和背景视图,从而节省了对每个像素进行的一些数学处理
2)如果视图移动,则可以简单地将其像素布置到新位置,而不进行任何重绘。这是一项用于滚动性能的巨大的协议,即使在桌面计算机上也是如此,更不用说移动设备了。