如何根据html内容设置UIWebView的高度?

KPI*_*eng 17 iphone uiwebview ipad ios

我想根据HTML内容设置UIWebview的高度.我得到一个字符串的大小,但由于段落,粗体,不同的字体大小等,没有得到实际的大小.

Gun*_*nds 13

我通常使用这些方法来设置UIWebview框架的内容大小:

- (void)webViewDidStartLoad:(UIWebView *)webView {
    CGRect frame = webView.frame;
    frame.size.height = 5.0f;
    webView.frame = frame;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    CGSize mWebViewTextSize = [webView sizeThatFits:CGSizeMake(1.0f, 1.0f)]; // Pass about any size
    CGRect mWebViewFrame = webView.frame;
    mWebViewFrame.size.height = mWebViewTextSize.height;
    webView.frame = mWebViewFrame;

    //Disable bouncing in webview
    for (id subview in webView.subviews) {
        if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
            [subview setBounces:NO];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它们被自动调用(如果你设置webView了这个类的委托),什么时候WebView加载它的内容.

  • 为什么要迭代子视图来查找滚动视图?只需使用webView.scrollView.我还认为你应该只在viewDidLoad中设置跳出,因为它只需要发生一次.(这仍然是一个很好的答案.) (3认同)

Mic*_*lum 9

好吧,每个Web视图都内置了一个UIScrollView,所以我会尝试等待页面加载,然后点击滚动视图的contentSize属性来获取页面的高度.

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    CGFloat height = webView.scrollView.contentSize.height;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

试试这个代码

- (void)webViewDidFinishLoad:(UIWebView *)webView
{     
    height= [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
}
Run Code Online (Sandbox Code Playgroud)