iPhone - 获取UIWebView的内容大小

Muh*_*qib 1 iphone objective-c ios5

我在我的UIWebView中打开本地Pdf文件,而不是尝试调整UIWebview的大小,使得WebView高度等于WebView内容高度我正在使用这行代码来获取WebView内容的高度

- (float) getWebViewContentHeight:(UIWebView *)view
{


    CGRect aFrame               = view.frame;

    aFrame.size.height  = [view sizeThatFits:[[UIScreen mainScreen] bounds].size].height;
    view.frame              = aFrame;

    return view.frame.size.height;
} 
Run Code Online (Sandbox Code Playgroud)

这段代码在iOS 4.3上完美运行,但在iOS 5.0上无法工作,任何人都可以帮助我了解如何获取webView的内容大小或使这段代码适用于iOS 5

Lvs*_*sti 6

访问内容有点棘手,但在这里我将展示2种方法.

1.丑陋的方式

使用JS查询文档属性:

CGSize contentSize = CGSizeMake([[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollWidth;"] floatValue],
                                [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"] floatValue]);
Run Code Online (Sandbox Code Playgroud)

2.不那么丑陋的方式

UIWebView是一个包含内部的复合对象UIScrollView.从iOS 5.0开始,您可以尝试抓取此滚动视图并contentSize直接使用其属性webView.scrollView.contentSize.如果你需要保持与iOS 4.3及之前的兼容性,你必须做一些黑魔法来获得滚动视图:

UIScrollView* webScrollView = nil;
for ( UIView* subview in [webView subviews] )
{
    if ( [subview isKindOfClass:[UIScrollView class]] )
    {
        webScrollView = (UIScrollView*)subview;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `webview.scrollview.contentSize`总是返回高度,永远不会返回小于当前高度的高度.你只能变得更大 (3认同)