2011-12-15 56 views

回答

114

opaque手段不画任何东西,即使你是透明的。

背景颜色的alpha只会影响背景颜色的透明度,而不会影响视图上的其他任何东西。

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


不透明的特性可以给你的速度增长 - 如果你知道你的观点会永远有透明度,你可以设置为YES,当iOS的渲染视图它可以使一些性能的优化,并使其更快。如果设置为NO,iOS将不得不将视图与下面的视图混合,即使它不包含任何透明度。

alpha还会影响背景颜色的alpha值,即如果背景颜色为0.5透明且alpha也为0.5,则这具有使背景视图的alpha 0.25(0.5 * 0.5)的效果。

+0

+1非常好的解释。谢谢 – Besi 2011-12-22 10:35:56

4

对于deanWombourne非常好的answer,值得补充一点,除非您不使用drawRect:方法绘制自己的内容,否则opaque属性不起作用。

Apple's doc

你只需要设置不透明属性的值在 的UIView的子类使用drawRect中得出自己的内容:方法。 不透明属性对系统提供的类没有影响如 UIButton,UILabel,UITableViewCell等。

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

此属性提供了一个提示绘图系统关于它如何 应该把视图。

,并从同一个苹果的doc一些准则:

如果视图是不透明的,要么不补其边界或含有 全部或部分透明的内容,结果是 不可预知的。如果视图完全或部分透明,则应始终将此属性的值设置为NO 。