Cómo calcular el ancho de desplazamiento de la página HTML para la altura fija sin usar UIWebView

Podemos usar lo siguiente para calcular el ancho de desplazamiento de una página HTML en una UIWebView con una altura fija.

[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"] 

¿Es posible hacer esta evaluación en páginas HTML locales sin cargar una request en una UIWebView?

Me gustaría que esto ocurriera en un hilo por separado.

No (tipo de). El html tendría que representarse en alguna capacidad para poder get cualquier tipo de medida. La razón de esto es inherente a la forma en que html / css / javascript trabajan juntos (javascript modifica las properties html / css, css modifica html). Si tuviera que get el ancho sin usar una UIWebView, estaría estancado con una de dos opciones:

  1. Renderiza la página tú mismo , ya sea con tu código personalizado (miles de horas hombre, no hagas esto) o con alguna biblioteca de código abierto. Dudo que esto sea más rápido que UIWebView, y es probable que introduzca errores inesperados.
  2. Mida la página en segundo plano y almacene ese valor en alguna parte . Esto sería básicamente una forma de almacenamiento en caching para el tamaño. Si las páginas son estáticas de cuando envía, simplemente hágalo manualmente y cópielo. Si son dynamics, escriba una class para medirlos al inicio y guarde el valor. La medición dinámica requeriría UIWebView

EDITAR:

¿Estás intentando hacer esto porque UIWebView está bloqueando tu principal subprocess, causando jeroglíficos en tu aplicación? Si es así, ¿ha considerado probar algo como esto ?:

  UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,460)]; webview.delegate = self; [webview loadRequest: [NSURLRequest requestWithURL:[NSURL urlFromString:@"/path/to/file.html"]]]; 

… y luego …

  - (void) webViewDidFinishLoad:(UIWebView *)webView { // run your code to get scroll width of page }