提高 UIWebView 的性能似乎真的很难,特别是对于像 Mashable 或 Ars Technica 这样的网站,这些网站会加载大量的脚本,而且长篇多页的文章很常见。
我知道 3 个类似的问题,但它们都没有可行的解决方案:
-
UIWebView 滚动不稳定 https://stackoverflow.com/questions/1187168/uiwebview-scrolls-jerkily- 私有 API 调用,例如
-(void)_setDrawInWebThread:(BOOL)arg1
and -(void)_setDrawsCheckededPattern:(BOOL)arg1
建议使用,并且我们知道 App Store 应用中不允许使用它们
-
如何使用 UIWebView 实现快速、平滑的滚动? https://stackoverflow.com/questions/2987132/how-to-get-fast-smooth-scrolling-with-uiwebview- 有人谈到了 CATiledLayer,但没有明确说明如何实现它。
-
在 UIWebView 上实现 CATiledLayer 以实现快速滚动 https://stackoverflow.com/questions/3356522/implementing-catiledlayer-on-a-uiwebview-for-fast-scrolling- Brad Larson 表示“由于 UIWebView 的渲染架构复杂,因此无法使用 CATiledLayer 手动支持 UIWebView。”
我想知道这个问题是否有任何解决方案。欢迎任何建议。
恐怕没有。大网站仍然很大,因此会消耗大量内存。
我反对 Brad Larson:在自己的 CATiledLayer 中支持网络视图在技术上是可能的(只需这样做[webView.layer renderInContext: ]
)但没有多大意义。平铺图层会延迟加载,Web 视图也是如此。您需要大量经过微调的代码来检测页面何时完成加载,然后将内容缓存到平铺层中,等等。
尽管如此,网络视图实际上已经相当优化了。我什至认为它是整个 iOS 中优化得最好的东西之一。它是整个平台上最常用的性能关键组件。每个多行文本都是一个 webview(例如,UITextView 是使用它们实现的)。如果网页视图在某些网站上中断,您将很难使其更快。
在某些情况下,不同的解决方案也可能有效,但前提是您正在寻找特殊目的。如果你不是,那就放开你的手,把时间花在其他地方。只是我的2分钱...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)