【发布时间】:2011-02-09 09:54:24
【问题描述】:
我试图找出不透明视图比透明视图更好的其他原因。但是,我想出的唯一合理的原因是不透明视图背后的视图不需要在该位置绘制其内容。
这是一个错误的假设吗?还有其他充分的理由吗?
谢谢。
【问题讨论】:
标签: iphone
我试图找出不透明视图比透明视图更好的其他原因。但是,我想出的唯一合理的原因是不透明视图背后的视图不需要在该位置绘制其内容。
这是一个错误的假设吗?还有其他充分的理由吗?
谢谢。
【问题讨论】:
标签: iphone
这是正确的假设。直接来自 Apple 文档:
opaque一个布尔值,确定 接收者是否不透明。
@property(nonatomic, getter=isOpaque) BOOL opaque讨论
此属性为绘图系统提供提示 至于它应该如何对待这个观点。如果 设置为
YES,绘图系统处理 视图完全不透明,这允许 绘图系统优化了一些 绘图操作和改进 表现。如果设置为NO,则绘图 系统正常合成视图 与其他内容。默认值 这个属性是YES。一个不透明的视图应该填充它的 完全不透明的边界 内容——也就是说,内容应该 alpha 值为
1.0。如果 视图是不透明的,要么不 填满它的界限或完全包含或 部分透明的内容, 结果是不可预测的。你应该 始终设置此属性的值 到NO如果视图是完整的或 部分透明。
【讨论】:
除了能够避免绘制背景视图之外,还有其他一些与合成相关的更快的原因:
1) 无需混合前景和背景视图,这样可以节省对每个像素进行的一些数学运算
2) 如果视图移动,它的像素可以简单地被传送到它们的新位置,而无需任何重绘。这对于滚动性能来说是一个巨大的交易,即使在台式计算机上也是如此,更不用说移动设备了。
【讨论】: