以下を使用して、固定の高さのUIWebViewでHTMLページのscrollWidthを計算できます。
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"]
UIWebViewにリクエストをロードせずにローカルHTMLページでこの評価を行うことは可能ですか?
これを別のスレッドで発生させたいですか。
いいえ(一種)。あらゆる種類の測定値を取得できるようにするには、HTMLをある程度の容量でレンダリングする必要があります。この理由は、html / css / javascriptが連携する方法に固有のものです(javascriptはhtml / cssプロパティを変更し、cssはhtmlを変更します)。UIWebViewを使用せずに幅を取得する必要がある場合は、次の2つのオプションのいずれかで行き詰まります。
編集:
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
}