2013-08-21 47 views
7

Tôi gặp vấn đề với việc đặt chiều cao của UIWebView động. Chế độ xem web tải mô tả sản phẩm chứa html. Tôi muốn các UIWebView để thay đổi chiều cao của nó dựa trên nội dung của mô tả. Chế độ xem phụ huynh cũng nên thay đổi chiều cao của nó, nhưng sau đó dựa trên chiều cao của UIWebView.Chiều cao động của UIWebView với bố cục tự động

Có ai có thể giải thích cho tôi cách tôi có thể đạt được hành vi mong muốn của quan điểm của tôi không?

Đây là quan điểm hệ thống cấp bậc của tôi:

enter image description here

+0

Bản sao có thể có của http://stackoverflow.com/questions/10715524/calculate-uiwebview-height-depending-on-its-content ??? –

+0

kiểm tra câu trả lời của tôi – AJ112

+0

Bản sao có thể có của [Cách xác định kích thước nội dung của UIWebView?] (Http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview) – Fattie

Trả lời

0

Bạn có thể đặt một hạn chế chiều cao liên tục trên WebView và sự thay đổi của bạn mà tự động khi bạn tính toán chiều cao từ các phản ứng.

Cũng ràng buộc giữa một cái nhìn con và một cái nhìn cha mẹ có thể đạt được bằng phương pháp này trong NSLayoutConstraint

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

Tôi có giới hạn chiều cao không đổi trên chế độ xem web, làm cách nào và ở đâu tôi có thể thay đổi chiều cao? Có phải là trong phương thức webviewdidfinishload không? – ruhu

5

tôi thực sự đã có cùng một vấn đề thời gian gần đây và kết thúc tìm nó ra và đặt lại với nhau một sample project trên github.

+0

Đối với hồ sơ, tôi đã tìm kiếm cao và thấp cho điều này, và dự án của bạn là sự giúp đỡ tốt nhất trong việc tất cả các ràng buộc bố trí tự động được sắp xếp. – tng

8

Bạn phải thêm một số mã trong phương thức ủy nhiệm của UIWebView có tên là webViewDidFinishLoad. Dưới đây là những gì bạn có thể làm:

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

Điều tương tự cũng có thể đạt được sử dụng javascript để tìm đỉnh cao quyền đó là như sau:

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

Hy vọng nó sẽ giúp!

+1

Tín dụng do [câu trả lời này] (http://stackoverflow.com/a/3937599/80425) –

+0

Nhưng cực kỳ không chính xác. Tôi nhận được nội dung cắt –

+0

Để có được kết quả chính xác, Sử dụng người quan sát cho contentSize để webView.scrollView – Rajesh73

Các vấn đề liên quan