我建立了包括应用程序UIWebView
含有大量图片,CSS,嵌入式视频,和JavaScript自来水处理程序。 滚动性能stuttery,我期待为洞察的最有效的方法来改善这一点。
其中如果有以下特点导致laggy UIWebView
滚动? 还有哪些因素可能影响性能?
- 图像的数量
- 我应该从DOM当用户滚动过去他们移除图片,并加入他们回来,如果他们滚动备份?
- 图像的大小
- 将在Web视图视网膜品质的图像影响滚动的性能比更小的版本会多了很多?
- 图像缩放
- 将提前调整时间的图片有很大的不同,而不是依赖于Web视图基于声明的一样,以规模
width: 100%;
?
- CSS
- 我避免
box-shadow
,但是是也被称为滚动性能产生负面影响还有其他的CSS属性?
如果有可用于分析任何其他资源或工具,我喜欢听到这些。
这是我从苹果开发者技术支持得到了前一阵子了答案:
在这个时候,我们不提供任何机制来优化的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
在LinkedIn的人都做自己的iPad应用有一个UIWebView和HTML5的广泛工作。 他们是重配图片,文字和视频全部饲料原料,是一个UIWebView内呈现。
下面的博客文章应该给你很多的出发点,以提高性能
LinkedIn为iPad:5项技术的HTML5光滑无限滚动
我有一个类似的问题,前一阵子。 我发现,把网页视图滚动型的内提高滚动性能大幅提升。 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不加载图像,并把它在一个滚动视图和设置框架内容大小,必须提前加载它们的时候,但我不能肯定。 我也相信这是有后果(即提高内存使用了前面),但我从来没有做这种方式的任何问题。