UIView:不透明与alpha与不透明
UIView的opaque
alpha
和背景不透明度是如何协同工作的?它们之间有什么区别?
UIView http://i.minus.com/jb2IP8TXbYTxKr.png
opaque
手段,即使你是透明的,也不要在下面画任何东西 。
背景颜色的alpha只会影响背景颜色的透明度,而不会影响视图上的任何东西。
alpha
会影响在视图上绘制的所有内容。
不透明的属性可以提高你的速度 – 如果你知道你的视图永远不会有透明度,你可以将它设置为YES
,当iOS呈现你的视图时,它可以进行一些性能优化并使其更快。 如果这被设置为NO
iOS将不得不将视图与下面的视图混合,即使它不包含任何透明度。
alpha也会影响背景颜色的alpha,例如,如果背景颜色是0.5透明,alpha也是0.5,则会使背景视图的alpha值为0.25(0.5 * 0.5)。
对于deanWombourne的非常好的回答 ,值得补充的是,除非您不使用drawRect:方法绘制自己的内容,否则opaque属性不起作用。
苹果的文档 :
您只需要为UIView的子类中的opaque属性设置一个值,使用drawRect:方法来绘制自己的内容 。 不透明属性在系统提供的类 (如UIButton,UILabel,UITableViewCell等)中不起作用 。
如果你绘制自己的内容,请记住,不透明只是一个提示
这个属性为绘图系统提供了一个提示,告诉它如何处理视图。
以及来自同一个苹果文档的更多指导方针:
如果视图是不透明的,或者没有填充界限或者包含完全或部分透明的内容,则结果是不可预测的。 如果视图完全或部分透明,您应该始终将此属性的值设置为NO。
- 将HEX NSString转换为NSData
- 如何使用iOS 7的NSURLSession及其委托方法系列来接受自签名SSL证书以进行开发?
- UIView的ClipToBounds和CALayer的mask到Bounds之间的关系如何?
- @财产/ @综合等价于swift
- 在代码生成的UIView上绘制UIBezierPath
- dispatch_async(dispatch_get_main_queue(),^ {…}); 等到做完了?
- 如何使图像和标签自定义UIBarButtonItem?
- 以编程方式获得导航栏的高度
- NSInternalInconsistencyException',原因:'无法在捆绑中加载NIB:'NSBundle