类似iOS中webview在黑色主题中加载时 ,会出现瞬间白屏的问题。究其本质是因为webView有很多子类,我们不能直接控制。
在OC时代还可以使用运行时方法,强制支出系统空件的一些不可见的子类,并进行修改。
但是在swift时候,一个let属性变量,你是几乎不可以去修改的。
isOpaque 属性很特殊 opaque 本意为不透明的,浑浊的。
isOpaque 默认为true,直接导致上层颜色覆盖下层颜色,优化手机的渲染过程。
isOpaque为false时,界面颜色该是咋样还是咋样,不会变化变成透明的,此时显示颜色的结果应该是
resultColor = topViewColor + bottomView(1- bottmViewAlpha)
如果bottmView的Alpha 等于1 ,将直接导致isOpaque的设置为false无效,始终取顶层的颜色。
应用场景:很多时候,我们处理一些系统级 大UI组件如WKWebView的时候,我们会发现它的一些子界面是不可见,而且是不可操作的。
当我们修改这个组件的isOpaque属性为false的时候,虽然渲染性能降低了,但是所有子界面的颜色都不会被渲染了。因为默认子界面的alpha =1 ,所以它们的color属性都变为nil了。
变相地,我们修改系统级组件的不可控子控件的颜色!!!
参考文章:
1.性能优化之 view 的 opaque 属性
2.UIView的alpha、hidden和opaque属性之间的关系和区别
】
网友评论