UIView:opaque vs. alpha vs. opacity

时间:2011-12-15 12:53:51

标签: iphone objective-c ios uiview

opaque alpha和背景的不透明度如何为UIView合作以及它们之间有什么区别?

UIView http://i.minus.com/jb2IP8TXbYTxKr.png

2 个答案:

答案 0 :(得分:124)

opaque表示不要在下面绘制任何,即使您是透明的。

背景颜色的alpha仅影响背景颜色的透明度,而不影响视图上绘制的任何其他颜色。

alpha会影响视图上绘制的所有内容。


opaque属性可以提高您的速度 - 如果您知道您的视图永远不会具有透明度,您可以将其设置为YES,当iOS呈现您的视图时,它可以制作一些性能优化并使其更快。如果设置为NO,iOS必须将您的视图与下方的视图混合,即使它没有包含任何透明度。

alpha也会影响背景颜色的alpha值,即如果背景颜色为0.5透明且alpha也为0.5,则会产生背景视图的alpha 0.25(0.5 * 0.5)。

答案 1 :(得分:7)

对于非常好的answer deanWombourne,值得补充的是,除非你没有使用drawRect:方法绘制自己的内容,否则opaque属性没有效果。

Apple's doc

  

您只需要为子类中的opaque属性设置一个值   UIView使用drawRect:方法 绘制自己的内容 。该   opaque属性 对系统提供的类 没有影响,例如   UIButton,UILabel,UITableViewCell等。

如果您绘制自己的内容,请记住,不透明只是一个提示

  

此属性为绘图系统 提供 提示   应该对待观点。

以及来自同一Apple文档的更多指南:

  

如果视图不透明且未填充其边界或包含   完全或部分透明的内容,结果是   不可预知的。您应始终将此属性的值设置为NO   如果视图完全或部分透明。