Bry*_*ace 14 performance scroll webkit uiwebview ios
我正在构建一个UIWebView
包含大量图像,CSS,嵌入式视频和JavaScript tap处理程序的应用程序.滚动表现很糟糕,我正在寻找有效改善这种情况的方法.
如果以下任何特征导致延迟UIWebView
滚动?还有哪些其他因素可能阻碍绩效?
width: 100%;
吗?box-shadow
,但是还有其他CSS属性,这些属性也会对滚动性能产生负面影响吗?如果有任何其他资源或工具可用于分析,我很乐意听到它们.
这是我刚才从Apple Developer Technical Support获得的答案:
目前,我们没有提供任何优化UIWebView渲染的机制.您看到差异的原因是Mobile Safari和UIWebView没有使用相同的渲染引擎.
性能取决于加载的内容.如果正在使用javascripts或使用插件,这可能会影响性能.
我建议您在http://developer.apple.com/bugreporter/上提交错误报告,详细说明您的情况.这还可以让您了解错误报告的状态.
UIWebView的一个可能的替代方案是开源DTCoreText库:https://github.com/Cocoanetics/DTCoreText,它为Float Reader应用程序提供支持:http://itunes.apple.com/us/app/float-reader/id447992005?MT = 8
LinkedIn的工作人员在他们的iPad应用程序上完成了UIWebView和HTML5的广泛工作.他们的整个视频,文本和视频都很重要,在UIWebView中呈现.
以下博客文章应该为您提供许多性能改进的起点
LinkedIn for iPad:5种HTML5平滑无限滚动技巧
不久前我也遇到过类似的问题。我发现将 webview 放在滚动视图中可以显着提高滚动性能。webview 完成加载后,我禁用了 webview 上的滚动,将 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];
}
Run Code Online (Sandbox Code Playgroud)
我假设网络视图不会加载图像,直到它即将出现在屏幕上,这导致了口吃,并且通过将其放入滚动视图并将框架设置为内容大小,它必须提前加载它们,但我不确定。我也确信这会产生后果(即预先增加内存使用量),但我这样做从来没有遇到任何问题。