如何改善UIWebView的滚动性能?(Ways to improve UIWebView scro

2019-07-28 23:43发布

我建立了包括应用程序UIWebView含有大量图片,CSS,嵌入式视频,和JavaScript自来水处理程序。 滚动性能stuttery,我期待为洞察的最有效的方法来改善这一点。

其中如果有以下特点导致laggy UIWebView滚动? 还有哪些因素可能影响性能?

  • 图像的数量
    • 我应该从DOM当用户滚动过去他们移除图片,并加入他们回来,如果他们滚动备份?
  • 图像的大小
    • 将在Web视图视网膜品质的图像影响滚动的性能比更小的版本会多了很多?
  • 图像缩放
    • 将提前调整时间的图片有很大的不同,而不是依赖于Web视图基于声明的一样,以规模width: 100%;
  • CSS
    • 我避免box-shadow ,但是是也被称为滚动性能产生负面影响还有其他的CSS属性?

如果有可用于分析任何其他资源或工具,我喜欢听到这些。

Answer 1:

这是我从苹果开发者技术支持得到了前一阵子了答案:

在这个时候,我们不提供任何机制来优化的UIWebView的渲染。 你看到一个差异的原因是由于移动Safari和UIWebView中不使用相同的渲染引擎。

性能取决于加载的内容。 如果有JavaScript的运行或正在使用的插件,这可能会阻碍性能。

我建议你在提交一个bug报告http://developer.apple.com/bugreporter/详细说明您的情况。 这也将让你在你的错误报告的情况通报。

一个可能的替代UIWebView的将是开源DTCoreText库: https://github.com/Cocoanetics/DTCoreText ,其中的权力浮动阅读器应用: http://itunes.apple.com/us/app/float-reader / id447992005?MT = 8



Answer 2:

在LinkedIn的人都做自己的iPad应用有一个UIWebView和HTML5的广泛工作。 他们是重配图片,文字和视频全部饲料原料,是一个UIWebView内呈现。

下面的博客文章应该给你很多的出发点,以提高性能

LinkedIn为iPad:5项技术的HTML5光滑无限滚动



Answer 3:

我有一个类似的问题,前一阵子。 我发现,把网页视图滚动型的内提高滚动性能大幅提升。 web视图完成对网页流量负载我禁用滚动后,设置的WebView框架和滚动视图的contentSize是的WebView内容的大小。

-(void) webViewDidFinishLoad:(UIWebView *)webView {   
    float size = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
    [self.scrollView setContentSize:CGSizeMake(self.view.frame.size.width, size)];
    [webView setFrame:CGRectMake(webView.frame.origin.x,
                                 webView.frame.origin.y,
                                 webView.frame.size.width,
                                 size)];

    [(UIScrollView*)[webView.subviews objectAtIndex:0] setScrollEnabled:NO];
}

我假设,直到它即将出现在屏幕上,这引起了口吃的WebView不加载图像,并把它在一个滚动视图和设置框架内容大小,必须提前加载它们的时候,但我不能肯定。 我也相信这是有后果(即提高内存使用了前面),但我从来没有做这种方式的任何问题。



文章来源: Ways to improve UIWebView scrolling performance?