2013-08-21 5 views
7

У меня проблема с динамической установкой высоты UIWebView. Webview загружает описание продукта, которое содержит html. Я хочу, чтобы UIWebView изменил свою высоту в зависимости от содержания описания. Родительский прокрутка также должен изменить его высоту, но затем на основании высоты UIWebView.Динамическая высота UIWebView с автоматической компоновкой

Может ли кто-нибудь объяснить мне, как я могу достичь желаемого поведения моих взглядов?

Это моя точка зрения иерархия:

enter image description here

+0

Возможный дубликат http://stackoverflow.com/questions/10715524/calculate-uiwebview-height-depending-on-its-content ??? –

+0

проверить мой ответ – AJ112

+0

Возможный дубликат [Как определить размер содержимого UIWebView?] (Http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview) – Fattie

ответ

0

Вы можете установить постоянное ограничение высоты на ваш WebView и изменениях, которые динамически, как только вы вычислить высоту от ответа.

тягот также между видом ребенка и родительского вида может быть достигнуто с помощью этого метода в NSLayoutConstraint

+ (id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c 
+0

У меня постоянное ограничение по высоте на веб-просмотре, как и где я могу изменить высоту? Является ли метод webviewdidfinishload? – ruhu

5

я на самом деле была та же проблема в последнее время и в конечном итоге выяснить это и собираю sample project на GitHub.

+0

Для записи я искал высоко и низко для этого, и ваш проект был наилучшей помощью в том, чтобы отсортировать все ограничения макета авто. – tng

8

Вы должны добавить код в метод делегата UIWebView с именем webViewDidFinishLoad. Вот что вы можете сделать:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
     CGRect frame = webView.frame; 
     frame.size.height = 1; 
     webView.frame = frame; 
     CGSize fittingSize = [webView sizeThatFits:CGSizeZero]; 
     frame.size = fittingSize; 
     webView.frame = frame; 

     NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height); 

     yourScrollView.contentSize = webView.bounds.size; 
} 

То же самым может быть достигнута с помощью JavaScript, чтобы найти правильную высоту, которая выглядит следующим образом:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    CGRect oldBounds = [[self webView] bounds]; 
    CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue]; 
    NSLog(@"NEW HEIGHT %f", height); 
    [webView setBounds:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, oldBounds.size.width, height)]; 
    yourScrollView.contentSize = webView.bounds.size; 
} 

Надеется, что это помогает!

+1

Кредит из-за [этого ответа] (http://stackoverflow.com/a/3937599/80425) –

+0

Но крайне неточно. Я получаю содержимое отключенным –

+0

Чтобы получить точный результат, используйте observer для contentSize для webView.scrollView – Rajesh73

Смежные вопросы