2012-10-29 19 views
22

LoadHtmlString işlevini kullanarak veri yükleyen bir kullanıcı arayüzüne sahibim.Aşağıdaki veri bir sqlite veritabanından yüklüyorum, her defasında farklı uzunlukta farklı bir dize yüklüyorum ve doğal olarak web görünümü farklı yükseklik elde ediyor .
Artık bir web sayfası altında bir resim yüklemek için uiwebview'in tam yüksekliğini her seferinde bilmem gerek. Ben UIWebView içeriğine sahip olmak için Yükseklik

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

denedi ama her zaman aynı sonucu elde. Her yüklendiğinde web görünümünün yüksekliğini dinamik olarak nasıl alabileceğimi bilmem gerekiyor. Thx

cevap

-3

Bu durumla başa çıkmak doğru bir yaklaşım değildi; görüntüyü bir resim görünümünde yüklemek ve her zaman yüksekliğini ve genişliğini ve tüm bu şeyleri akılda tutmak zorunda kalmak yerine ... En kolay ve en güvenilir çözüm, görüntüyü html dizgisi içine yüklemek oldu ve işte bu! Sadece baseURL olduğundan emin olun ve hangi yönde olursa olsun her şey tamam olacak:

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

Sen web görünümün scrollView özelliğine erişerek web görünümüne içeriğin yüksekliğini alabilirsiniz:

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

JS'den daha iyi insection. Senin için de + 1. –

+6

Denedim ama aynı sayı devam ediyor ... 2 kelimelik bir paragraf olsa bile 737 aldım, bu yüzden işe yaramadı: S –

+0

@EliasRahme Burada neyi başarmaya çalıştığınızı daha iyi açıklayabilir misiniz? Yukarıda listelediğim kod *, * web sayfasındaki içeriğin boyutunu nasıl izlersiniz. –

45

sizin webViewDidFinishLoad yönteminde bu

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

int height = [result integerValue]; 

deneyin.

+0

Bunu önerecektim. +1. –

+0

Ve sonucu bir değişkene nasıl alacağım? Önerinizin sonucunu göremiyorum nasıl halledebilirim? –

+2

@EliasRahme'i anlamak için yeni teşekkürler. Sonuç, döndürülen dizeye dönüşür: 'NSString * sonuç = [webView stringByEvaluatingJavaScriptFromString: @" document.body.offsetHeight; "];' Sonuç 'dizgisini bir kullanabilir: 'int height = [sonuç integerValue];' –