17

HTML コンテンツに基づいて UIWebview の高さを設定したい。文字列のサイズを取得していますが、段落、太字、異なるフォント サイズなどのために実際のサイズを取得できません。

4

5 に答える 5

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];
        }
    }
}

がコンテンツのロードを完了すると、(webViewのデリゲートをこのクラスに設定した場合) 自動的に呼び出されます。WebView

于 2012-10-16T12:41:39.470 に答える
8

すべての Web ビューには UIScrollView が組み込まれているので、ページが読み込まれるのを待ってから、スクロール ビューの contentSize プロパティをタップしてページの高さを取得します。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    CGFloat height = webView.scrollView.contentSize.height;
}
于 2013-08-08T11:33:08.683 に答える
6

このコードを試してください

- (void)webViewDidFinishLoad:(UIWebView *)webView
{     
    height= [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
}
于 2012-10-16T12:58:49.007 に答える
1
- (void)viewDidLoad
{
    [super viewDidLoad];
    webview.delegate = self;
    [webview loadHTMLString:@"<div id='foo' style='background: red'>The quick brown fox jumped over the lazy dog.</div>" baseURL:nil];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *output = [webview stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"foo\").offsetHeight;"];
    NSLog(@"height: %@", output);
}

可変高さのUITableView内で、コンテンツに基づいてUIWebViewの高さを決定する方法も参照してください。

コンテンツに応じて UIWebView の高さを計算する

于 2012-10-16T12:42:16.850 に答える