当WKWebView显示内容时,它将显示白色,持续约1~2秒。不是内存问题,我用的是[self loadHTMLString:string baseURL:baseURL];显示HTML内容,但每次需要等待1~2秒才会正常显示。UIWebview没有这个问题。有什么办法解决吗?或者优化这个空白时间?
bz4sfanl1#
有时需要一段时间才能通过网络加载页面。在数据加载之前,页面为白色。一个简单的解决方案是尽早发出load()命令。在它需要被调用之前。我预计下一页,但不显示它,直到它是必要的。当需要的时候,它已经加载了,我只需要添加它:
viewController.view.addSubview(webView)
字符串根据我的需要,我使用两种不同的方法:我要么提前加载视图,然后将Alpha更改为0,这样它就不可见了:
webView.alpha = 0
型当然,当我想要它显示时,我会将它改为1. 0。或者我从superview中删除web视图(它需要是一个类属性,这样它才能被保留),像这样:
func removeWebView(_: UITapGestureRecognizer) { print("removewebview tap") webView.removeFromSuperview() }
型如果遵循此方法,则需要调用一个方法将子视图(Web视图)添加回来,如果使用自动布局,则需要重新应用约束,因为当您从超级视图中删除Web视图时,这些约束会丢失。如果这样做,不要忘记在父视图上调用.setNeedsLayout()。
nx7onnlm2#
iOS上最有效的解决方案,以防止WKWebView不必要的白色背景,以防您的视图设置的其余部分是黑暗的:
WKWebView
webView.isOpaque = false
字符串
2条答案
按热度按时间bz4sfanl1#
有时需要一段时间才能通过网络加载页面。在数据加载之前,页面为白色。一个简单的解决方案是尽早发出load()命令。在它需要被调用之前。我预计下一页,但不显示它,直到它是必要的。当需要的时候,它已经加载了,我只需要添加它:
字符串
根据我的需要,我使用两种不同的方法:我要么提前加载视图,然后将Alpha更改为0,这样它就不可见了:
型
当然,当我想要它显示时,我会将它改为1. 0。
或者我从superview中删除web视图(它需要是一个类属性,这样它才能被保留),像这样:
型
如果遵循此方法,则需要调用一个方法将子视图(Web视图)添加回来,如果使用自动布局,则需要重新应用约束,因为当您从超级视图中删除Web视图时,这些约束会丢失。如果这样做,不要忘记在父视图上调用.setNeedsLayout()。
nx7onnlm2#
iOS上最有效的解决方案,以防止
WKWebView
不必要的白色背景,以防您的视图设置的其余部分是黑暗的:字符串