我们可以使用下面的方法来计算一个 HTML 页面在一个固定高度的 UIWebView 中的 scrollWidth。
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"]
是否可以在不将请求加载到 UIWebView 的情况下对本地 HTML 页面进行此评估?
希望这发生在一个单独的线程上。
不(有点)。需要以某种能力呈现 html 才能获得任何类型的测量值。原因在于 html/css/javascript 协同工作的方式(javascript 修改 html/css 属性,css 修改 html)。如果您必须在不使用 UIWebView 的情况下获得宽度,您将被以下两个选项之一困住:
编辑:
您是否尝试这样做是因为 UIWebView 阻塞了您的主线程,从而导致您的应用程序出现抖动?如果是这样,您是否考虑过尝试这样的事情?:
UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,460)];
webview.delegate = self;
[webview loadRequest: [NSURLRequest requestWithURL:[NSURL urlFromString:@"/path/to/file.html"]]];
……然后后来……
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
// run your code to get scroll width of page
}