opaque
alpha
和背景的不透明度如何为UIView合作以及它们之间有什么区别?
答案 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属性没有效果。
您只需要为子类中的opaque属性设置一个值 UIView使用drawRect:方法 绘制自己的内容 。该 opaque属性 对系统提供的类 没有影响,例如 UIButton,UILabel,UITableViewCell等。
如果您绘制自己的内容,请记住,不透明只是一个提示
此属性为绘图系统 提供 提示 应该对待观点。
以及来自同一Apple文档的更多指南:
如果视图不透明且未填充其边界或包含 完全或部分透明的内容,结果是 不可预知的。您应始终将此属性的值设置为NO 如果视图完全或部分透明。