Как динамически изменить высоту webView?

В настоящее время я использую webView для отображения новостей, под новостями я собираюсь поместить несколько кнопок. Поэтому мне нужно получить высоту webView, чтобы после каждой загрузки изменить положение кнопок в соответствии с высотой webView. Другими словами, Как динамически изменить высоту webView?

 iCoder20 июн. 2013 г., 06:03
self.webView.frame.size.height - это то, что вы хотите?

Ответы на вопрос(4)

Сделайте это внутри метода делегата webViewDidFinishLoad:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
    CGFloat height = [[aWebView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
    CGFloat width = [[aWebView stringByEvaluatingJavaScriptFromString:@"document.width"] floatValue];
    aWebView.frame = CGRectMake(aWebView.frame.origin.x,aWebView.frame.origin.y,width, height);
}

У webView есть методsizeThatFits: который возвращает размер содержимого после добавления веб-представления в иерархию представлений и завершения загрузки HTML.

Но это не работает без предупреждения. Вам нужно установить низкое значение для рамки веб-просмотра перед вызовом метода подгонки размера.

Например: если у вас есть фиксированная ширина и переменная высота

//Set a very low height
CGRect webViewFrame = self.webView.frame;
webViewFrame.size.height = 5.0f;
self.webView.frame = webViewFrame;
//Re calculate the size that fits
CGSize size = [self.webView sizeThatFits:webViewFrame.size];
self.webViewFrame.size = size;
self.webView.frame = webViewFrame;

PS: я хочу отдать должное оригинальной работе. Я'Я все еще ищу в SO

Решение Вопроса

попробуй это

    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        NSString *string = [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"body\").offsetHeight;"];
        CGFloat height = [string floatValue] + 8;
        CGRect frame = [_webView frame];
        frame.size.height = height;
        [_webView setFrame:frame];

        if ([[self delegate] respondsToSelector:@selector(webViewController:webViewDidResize:)])
        {
            [[self delegate] webViewController:self webViewDidResize:frame.size];
        }
    }
According to your device type like iPhone 4 or iPhone 5 you can set your webview
The web view has finished loading.
    - (void)webViewDidFinishLoad:(UIWebView *)webView {

        [DejalActivityView removeView];

        if ([objSpineCustomProtocol windowHeight] == 480) {

            termsWebView.frame = CGRectMake(termsWebView.frame.origin.x
                                            ,termsWebView.frame.origin.y
                                            ,termsWebView.frame.size.width
                                            ,350);

        }

    }// End of Method webViewDidFinishLoad

// VKJ

 piaChai19 нояб. 2013 г., 01:52
Это не "динамический»Вы просто фиксируете высоту webView до 350, в то время как устройство iPhone 4.
 Vinod Joshi02 дек. 2013 г., 09:02
да, еще один способ сделать этоДинамический».. автоматическое расположение доступно ...

Ваш ответ на вопрос