2019-08-20 巧用 UIView的isOpaque属性解决WKWebView的白屏问题

类似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属性之间的关系和区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容