2015-01-07 3 views
1

Я знаю, этот вопрос был размещен так много раз, но до сих пор я не могу изменить высоту UIWebView на основе его содержаниявысота WebView не устанавливается на основе его содержания

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    [email protected]"webview"; 
    [_webView setDelegate:self]; 

    NSString * string = @"<h1>This is HTML string</h1>"; 
    [_webView loadHTMLString:string baseURL:nil]; 
} 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    return YES; 
} 


- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    NSLog(@"start loadinng......."); 

} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"finish loading......."); 



    CGRect frame = _webView.frame; 
    frame.size.height = 1; 
    _webView.frame = frame; 
    CGSize fittingSize = [_webView sizeThatFits:CGSizeZero]; 
    frame.size = fittingSize; 
    _webView.frame = frame; 
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    NSLog(@"Failed to load with error :%@",[error debugDescription]); 

} 

может кто-нибудь помочь мне, как можно изменить размер моего UIWebView высота?

+0

Почему вам нужно увеличить высоту WebView, она может прокручивать содержимое, если оно больше его высоты ... –

+0

Вы ничего не сделали, чтобы изменить высоту веб-просмотра. – iphonic

+0

@ KananVora: спасибо за повторное воспроизведение .... потому что у меня есть табличное представление, и каждая строка содержит веб-просмотр, а ответ моей службы - в строке html, поэтому вам нужно установить как высоту ячейки, так и веб-представление на основе ее содержимого ... пожалуйста, помогите мне его очень срочно –

ответ

0

Вот ваш ответ.

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    if (webView.isLoading){ 
     return; 
    } 
    CGSize contentSize = webView.scrollView.contentSize; 
    NSLog (@"height: %f",contentSize.height); 
} 

После gettting этой высоты реструктурировать свой WebView с новой шириной и высотой, а также реструктурировать его родительский вид, если таковые имеются.

+0

Я пробовал это, но он возвращает размер контента 504,00, тогда как есть только одна строка строки..так, по моему мнению, это будет меньше 50-60. Скажите, как я могу справиться ??? –

+0

сначала удалите инструкцию [webView sizeToFit]. А также проверьте размер, который вы указали в webView. Вы должны указать минимальный размер, а затем проверить один код строки. Затем добавьте еще немного текста, а затем проверьте, он показывает требуемую высоту или нет. –

+0

Я установил webview из раскадровки в моем представлении управления размером 0,0,320,150 по умолчанию. –

0

Как насчет этого.

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 

    [webView sizeToFit]; 
    webView.frame = CGRectMake(x,y,width,webView.frame.size.height); 
} 
+0

Я пробовал ваш код, но не работал. –

+0

@BandishDave: У вас есть делегат для просмотра в Интернете? Вызывается ли webViewDidFinishLoad? –

+0

: Да, сэр это называется. –

0

Я обычно использую эти методы, чтобы установить 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]; 
     } 
    } 
} 

Они вызываются автоматически (если вы установите webviews делегата к этому классу), когда WebView закончил загрузку это содержание.

или

  1. check this

  2. raywenderlich-tutorial

Это может поможет вам :)

0
First calculate height of web view for desired content. 
NSString* lString = @"<h1>This is HTML string</h1>"; 
NSAttributedString* lAttributedText = [[NSAttributedString alloc] initWithData: [lString dataUsingEncoding:NSUTF8StringEncoding] 
options:@{ 
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding) 
}                
documentAttributes: nil 
error:nil]; 

CGRect lBoundingRect = [lAttributedText boundingRectWithSize: CGSizeMake(_webView.bounds.size.width, CGFLOAT_MAX) options: NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading context: nil]; 

then set it to _webView.frame 

Now, load web view 
[_webView setDelegate:self]; 

[_webView loadHTMLString: lString baseURL:nil];