2012-10-29 36 views
22

Tôi có một uiwebview tải dữ liệu bằng hàm loadHtmlString. Tôi đang tải dữ liệu từ cơ sở dữ liệu sqlite, mỗi lần tôi tải một chuỗi khác với độ dài khác nhau và tự nhiên chế độ xem web có chiều cao khác .
Bây giờ tôi cần phải biết mỗi lần chiều cao chính xác của uiwebview để tải một imageView ngay dưới webView. Tôi đã thửNhận nội dung của UIWebView Chiều cao

- (void)webViewDidFinishLoad:(UIWebView *)aWebView { 
    CGRect frame = aWebView.frame; 
    frame.size.height = 1; 
    aWebView.frame = frame; 

    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero]; 
    frame.size = fittingSize; 
    aWebView.frame = frame; 

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

nhưng tôi luôn luôn nhận được kết quả tương tự. Tôi cần phải biết làm thế nào tôi có thể nhận được tự động chiều cao của web xem mỗi khi nó được nạp. Thx

Trả lời

-3

Đây không phải là cách tiếp cận đúng để xử lý tình huống này; thay vì tải hình ảnh ở chế độ xem hình ảnh và phải luôn ghi nhớ chiều cao và chiều rộng và tất cả nội dung đó ... Giải pháp dễ nhất và đáng tin cậy nhất chỉ là tải hình ảnh bên trong chuỗi html và chính xác! Chỉ cần chắc chắn về baseURL như vậy và mọi thứ sẽ ổn dù bạn định hướng gì:

NSString* extension = @"gif"; 
    NSString* strRR = [NSString stringWithFormat:@"%@.%@", authorNAme2,extension]; 
    NSString *path = [[NSBundle mainBundle] bundlePath]; 
    //NSLog(@"This is the path %@", path); 
    NSURL *baseURL = [NSURL fileURLWithPath:path]; 
    // NSLog(@"this is the base URL %@",baseURL); 

    NSString *cachePath = [NSString stringWithFormat:@"%@/%@", path,strRR]; 

      NSString * htmlString = [NSString stringWithFormat:@"\ 
            <html>\ 
            <table width='100%%'>\<tr>\<td>\ 
            <body>\ 
            <p style = 'font-size:30px;'> %@ <\p>\ 
            </td></tr><tr><td><br></td></tr><tr><td align ='center'><br><img src='%@' width='60%%' \></td></tr></body>\ 
            </table>\ 
            </html>",authorNAme , cachePath]; 



      //   NSString *selection = [WebV2 stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; 
      //   NSLog(@"*/*/*/*/**/*/*/*/*/*/*//*/ This is your selection mate %@" , selection); 




      WebV.opaque = NO; 
      WebV.backgroundColor = [UIColor clearColor]; 
      [self.WebV setScalesPageToFit:YES]; 
      [self.WebV loadHTMLString:htmlString baseURL:baseURL]; 
29

Bạn có thể lấy chiều cao lớn nội dung trong một view web bằng cách truy cập thuộc tính scrollView quan điểm của web:

NSLog(@"%f",myWebView.scrollView.contentSize.height); 
+1

Tốt hơn so với JS insection. 1 cho bạn quá. –

+6

Tôi đã thử nó nhưng số vẫn giữ trên đang xảy ra ... ngay cả khi tôi có một đoạn 2 từ tôi nhận được 737 vì vậy nó đã không làm việc: S –

+0

@EliasRahme Bạn có thể vui lòng giải thích rõ hơn những gì bạn đang cố gắng đạt được ở đây. Mã tôi đã liệt kê ở trên * là * cách bạn theo dõi kích thước của nội dung trong chế độ xem web. –

45

Hãy thử điều này

NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"]; 

int height = [result integerValue]; 

trong phương pháp webViewDidFinishLoad của bạn.

+0

Sẽ đề xuất điều này. +1. –

+0

Và làm thế nào tôi sẽ nhận được kết quả trong một biến? Tôi không thấy kết quả của đề nghị của bạn làm thế nào tôi có thể xử lý nó? Tôi cảm ơn sự hiểu biết mới –

+2

@EliasRahme Bạn nhận được kết quả vào chuỗi được trả về: 'NSString * result = [webView stringByEvaluatingJavaScriptFromString: @" document.body.offsetHeight; "];' Để chuyển đổi chuỗi 'result' thành int bạn có thể sử dụng: 'int height = [result integerValue];' –

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