Bar*_*erk 11 webkit objective-c ios wkwebview
我目前正在开发一个使用a UIWebView
来显示某些内容的应用程序.它曾经很好地工作UIWebView
,但我们决定切换到WKWebView
我们将操作系统要求提高到8.1.我们注意到性能有了很大的提高,但是一些简单的认为过去工作正常,现在开始失败了.经过一些研究,我设法看到发生了什么 - 但我没有看到如何解决它.我想知道是否有人可以借此给我一个...
我们的webview加载的URL需要相当多的时间来完成工作,所以在开始请求之前我们加载一个静态微调器,这样用户就不会觉得应用程序已经疯了.该静态内容的加载周期已经调整,因此在正确加载静态内容之前,我们不会启动URL请求.只要用户不旋转设备,这样就可以正常工作.这是可以看到的:
(出于隐私目的,我不得不改变视图.毕竟我不是这段代码的所有者:-))
我正在使用这个HTML代码来测试大小.身体的背景颜色为深灰色,丑陋的浅灰色框扩展到宽度的100%,减去边缘.到现在为止还挺好.但是如果用户旋转设备,则会发生以下情况:
这是令人毛骨悚然的,因为显然身体的拉伸与最大宽度匹配,但内部div处理错误的相对大小.只要正在处理请求,这就会继续.当我强制超时使请求失败时,WKWebView
重新呈现并显示其正确的外观:
一旦我发现了这一点,我尝试了订阅旋转观察器并强制重新渲染webview,但没有成功:
viewNeedsDisplay
了两个UIWebView
和UIScrollView
内UIWebView
UIScrollView
内容那么,到目前为止我的结论:
UIWebView
,只是在新的WKWebView
(我再次测试,确认)WKWebView
在加载状态时无法正确呈现视图有人知道是否有办法解决这个问题?像我缺少的一个神奇属性,默认情况下被禁用?当他们重新制作webview时,我不认为他们打破了这一部分...在此先感谢:)
编辑:自创建帖子以来我尝试过的东西没有成功:
dispatch_async
方法在不同的线程中调用http请求不起作用.在引擎盖下,WKWebview
可能最终使用相同的线程,就像从主线程中调用它一样.虽然我没有解决WKWebView
加载内容时不渲染的问题,但我建议对您的问题采取不同的解决方案。
您可以将加载视图从 web 视图中加载的页面更改为本机 iOS 视图。只需在开始加载时将子视图添加到主视图中,位于 Web 视图上方,并在加载完成后将其删除。这对于轮换来说效果很好,因此您可以获得与以前相同的体验。
UIWebView
另一个解决方案是像之前那样在 a 中加载加载视图,这样可以很好地处理旋转以及WKWebView
后面的正常页面。加载页面时,您也只需隐藏或删除UIWebView
.
归档时间: |
|
查看次数: |
3848 次 |
最近记录: |