如何在不使用UIWebView的情况下计算固定高度的HTML页面的scrollWidth

时间:2012-04-19 20:04:52

标签: ios uiwebview

我们可以使用以下内容来计算具有固定高度的UIWebView中HTML页面的scrollWidth。

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

是否可以在本地HTML页面上进行此评估而无需将请求加载到UIWebView中?

希望在单独的线程上发生这种情况。

1 个答案:

答案 0 :(得分:3)

(有点)。 html需要以某种身份呈现,以便能够进行任何类型的测量。 原因在于html / css / javascript协同工作的方式(javascript修改html / css属性,css修改html)。如果您必须在不使用UIWebView的情况下获得宽度,您将会遇到以下两种选择之一:

  1. 自己渲染页面,无论是自定义代码(数千个工时,不执行此操作)还是某些开源库。我怀疑它会比UIWebView更快,并且可能会引入意想不到的错误。
  2. 在后台测量页面,并将该值存储在某个地方。这基本上是一种大小的缓存形式。如果页面在您发货时是静态的,只需手动执行,然后对其进行硬编码。如果它们是动态的,请编写一个类以在启动时测量它们并存储该值。 动态测量需要UIWebView
  3. 编辑:

    你是否试图这样做,因为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
     }