The opaque
UIView 的属性默认情况下始终设置为“YES”。但 UIView 类参考指出了这一点:
不透明视图应该用完全不透明的内容填充其边界,即内容的 alpha 值应为 1.0。如果视图不透明并且未填充其边界或包含完全或部分透明的内容,则结果是不可预测的。
自从改变了alpha
视图的设置非常常见,尤其是在过渡或动画期间,那么上面的语句意味着您必须始终手动设置opaque
to NO
如果你要改变alpha
财产也是如此。
但我从来没有手动调整过opaque
并且没有任何明显的症状。做出这样的考虑有多大必要?
答案是 iOS 足够聪明,可以识别出如果你的视图是alpha
小于1,它需要绘制你视图后面的内容,不管你的视图是什么opaque
财产。
回应评论:从我有限的实验来看,我认为这种观点不成立opaque
属性有任何影响。 (我认为文档是错误的。)视图的层opaque
属性确实有影响:它控制是否CGContext
传递给drawRect:
有一个阿尔法通道。如果该层的opaque
属性为 YES,上下文没有 alpha 通道(并且被视为每个像素的 alpha 为 1.0)。
改变视图的opaque
属性对图层没有影响opaque
财产。这与(例如)视图的不同alpha
属性,它只是图层的包装opacity
财产。
理论上,已经记录了opaque
属性允许他们优化绘图,苹果可以在未来实现这种优化。实际上,这样做可能会破坏很多应用程序,因此他们可能不会将此类更改应用于与旧版 SDK 链接的应用程序。 (他们能够根据应用程序链接的版本使 UIKit 表现不同。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)