【问题标题】:Get height of UIWebView loaded content获取 UIWebView 加载内容的高度
【发布时间】:2013-10-10 13:30:31
【问题描述】:

所以我所追求的是一种将UIButton 放在UIScrollView 顶部和UIWebView 下方的方法。我想要这样的原因是当用户滚动我加载到 UIWebView 中的页面时,我需要按钮“滚动”。

为了使其工作,我需要获取我加载的网页内容的高度,然后设置网络视图的高度以匹配此。如果我能做到这一点,我打算设置 UIScrollView 的 contentSize 以匹配按钮和 web 视图的高度。

我知道这应该以某种方式发生在- (void)webViewDidStartLoad:(UIWebView *)webView 方法中,这在stackoverflow 上的许多线程上得到了证实(例如this one)。我也知道 Apple 说您不应该将 UiWebView 放在 UIScrollView 中,因为滚动操作可能会干扰。不过,禁用 Web 视图的滚动应该可以避免这个问题。

有很多线程讨论这个问题,但似乎没有一个对我有用。会不会是因为我在 iOS7 上运行?



我在这里非常绝望,非常感谢您的帮助!

【问题讨论】:

    标签: ios cocoa-touch uiwebview uiscrollview ios7


    【解决方案1】:

    您可以使用以下代码获取高度:

    NSString *heightStrig = [webView stringByEvaluatingJavaScriptFromString:@"(document.height !== undefined) ? document.height : document.body.offsetHeight;"];
    float height = heightStrig.floatValue;
    

    完整代码:

    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        CGRect frame = webView.frame;
        NSString *heightStrig = [webView stringByEvaluatingJavaScriptFromString:@"(document.height !== undefined) ? document.height : document.body.offsetHeight;"];
        float height = heightStrig.floatValue + 10.0;
        frame.size.height = height;
        webView.frame = frame;
    }
    

    【讨论】:

      【解决方案2】:

      您可以获取加载到UIWebView 中的内容的高度,如下所示:

      - (void)webViewDidFinishLoad:(UIWebView *)webView {
          CGFloat contentHeight = webView.scrollView.contentSize.height;
      }
      

      然后相应地调整网页视图的框架。

      【讨论】:

      • 我以前试过这个。但是您如何建议我更改 Web 视图框架?用这种方法?并且也在这个方法中改变 IOScrollView 框架? ... 似乎对我不起作用。
      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多