2017-02-27 77 views
1

我的老板抱怨低渲染性能。渲染同一页面时使用UIWebView和Safari的应用程序有什么区别? 任何帮助将不胜感激。UIWebview和移动Safari在渲染页面时有什么不同吗?

+0

是什么版本的操作系统?我记得在iOS7发布期间,苹果在webviewUI内将JS Engine性能降低了25%。后来他们增加了它,但不知道它现在的表现如何。有没有检查过一段时间 – Adapter

+0

现在我使用的是iOS 10.2,这个问题很重要吗? – ChenXi

回答

3

UIWebView已弃用。

来自Apple Docs。

重要

中的iOS 8.0和OS X 10.10开始,使用WKWebView Web内容 添加到您的应用程序。不要使用UIWebView或WebView。

@import的WebKit 并使用WKWebView

WKWebView有很大的改善JS实施和使用。 它在性能上与Safari非常相似。

差异:WKWebView可用作应用程序控制器的视图。 Safari作为单独的应用程序运行。 SafariController在您的应用中的Safari应用程序中运行它自己的应用程序。

+0

意思是说“SafariController在您的应用程序内的Safari自己的viewController中运行。” – Taun

+0

但是WKWebView发出请求并将内容渲染为进程外,这意味着我的应用程序不会听到他们提出的请求。所以我不能使用WKWebview观察JS Loading如果我想在JS完成时做某事。还有其他的选择吗? – ChenXi

+0

WKWebView已经评估了JavaScript:completionHandler:和WKScriptMessageHandler用于评估JS和从JS获取消息。它还具有WKUIDelegate,WKNavigationDelegate,用于观察加载进度并根据内容和3D触摸执行操作。您甚至可以使用WKUserScript将JS注入顶部或底部的页面。不知道你还能想要什么。因此,例如,您不仅可以通过WKUINavigation知道何时加载完成,还可以使用WKUserScript在末尾注入JS,并在执行时向脚本处理程序发送消息。 – Taun

0

是的,在移动Safari和UIWebView的

一些异同
  • UIWebView的支持HTML5的所有功能,如移动Safari
  • 的UIWebView比Safari的某些功能更严格一点。例如:当通过JS设置宽度/高度样式时,需要在数字后面添加“px”,而Mobile Safari不需要这样做。
  • 对于身份验证,UIWebView不会自动处理身份验证挑战,这取决于开发人员处理它们。
  • UIWebView没有Nitro Javascript引擎,因此它比Mobile Safari执行的要慢,因此它的执行速度为 。
  • UIWebView不会跟踪帧内页面转换的浏览历史记录,这可能是一个理想的功能。

希望这个答案可以帮助你

+0

那么有没有可能在我的应用程序中的UIWebview运行相同的页面与Safari中的移动版本一样快? – ChenXi

+0

您可以根据需要导入webkit并进行优化, –