Bes*_*esi 56 iphone objective-c uiview ios
opaque alpha对于UIView,背景的不透明度和不透明度如何协同工作以及它们之间有什么区别?
dea*_*rne 126
opaque意味着即使你是透明的,也不要在下面画任何东西.
背景颜色的alpha仅影响背景颜色的透明度,而不影响视图上绘制的任何其他颜色.
alpha 影响视图上绘制的所有内容.
opaque属性可以提高速度 - 如果您知道您的视图永远不会具有透明度,您可以将其设置为YES,当iOS呈现您的视图时,它可以进行一些性能优化并使其更快地呈现.如果设置为NOiOS,则必须将视图与下面的视图混合,即使它没有包含任何透明度.
alpha也会影响背景颜色的alpha,即如果背景颜色为0.5透明且alpha也为0.5,则会产生背景视图的alpha 0.25(0.5*0.5).
Mik*_*laj 10
对于deanWombourne 的非常好的答案,值得补充的是,除非您不使用drawRect:方法绘制自己的内容,否则opaque属性无效.
您只需要为UIView的子类中的opaque属性设置一个值,该值使用drawRect:方法绘制自己的内容.opaque属性对系统提供的类(如UIButton,UILabel,UITableViewCell等)没有影响.
如果您绘制自己的内容,请记住,不透明只是一个提示
此属性为绘图系统提供了如何处理视图的提示.
以及来自同一Apple文档的更多指南:
如果视图不透明并且未填充其边界或包含完全或部分透明的内容,则结果是不可预测的.如果视图完全透明或部分透明,则应始终将此属性的值设置为NO.