2012-10-16 4 views
18

मैं HTML सामग्री के आधार पर UIWebView की ऊंचाई सेट करना चाहते हैं। मैं एक स्ट्रिंग के आकार हो रही है, लेकिन पैरा, बोल्ड, अलग फ़ॉन्ट आकार आदि के कारण वास्तविक आकार नहीं मिल रहाएचटीएमएल सामग्री के आधार पर UIWebView की ऊंचाई कैसे सेट करें?

+1

[क्या आप की कोशिश की है?] (Http://whathaveyoutried.com) – thegrinner

+0

वेब-दृश्य, एक स्क्रॉल मिल गया तो आप शायद उस आवश्यकता नहीं है। – alexandresoli

+0

मेरे पास UITablView में प्रत्येक पंक्ति में वेबदृश्य है। मुझे ऊंचाई पर हर पंक्ति की वेबव्यू ऊंचाई नहीं मिल रही है ForRowAtIndexPath। तो मैं उलझन में हूं कि प्रत्येक पंक्ति ऊंचाई ऊंचाई में कैसे सेट करें ForRowAtIndexPath। – KPIteng

उत्तर

13

मैं आमतौर पर इन पद्धतियों का उपयोग, 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]; 
     } 
    } 
} 

वे स्वचालित रूप से कहा जाता है, जब WebView लोड हो रहा है यह सामग्री है समाप्त हो गया है (आप इस वर्ग के लिए webView के प्रतिनिधि निर्धारित करते हैं)।

+3

आप subviews से अधिक क्यों पुनरावृत्ति कर रहे हैं पुस्तक को देखने लगता है? बस webView.scrollView का उपयोग करें। मुझे यह भी लगता है कि आपको केवल देखने के लिए बाउंस सेट करना चाहिए क्योंकि इसे केवल एक बार होने की आवश्यकता है। (यह अभी भी एक अच्छा जवाब है।) – griotspeak

+0

टिप्पणी के लिए धन्यवाद - अच्छा विचार :)। मेरे द्वारा पोस्ट किया गया कोड वास्तव में पुराना है, समय से जब स्क्रॉलव्यू सीधे पहुंच योग्य नहीं था। –

1
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    webview.delegate = self; 
    [webview loadHTMLString:@"<div id='foo' style='background: red'>The quick brown fox jumped over the lazy dog.</div>" baseURL:nil]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *output = [webview stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"foo\").offsetHeight;"]; 
    NSLog(@"height: %@", output); 
} 

यह भी देखना How to determine UIWebView height based on content, within a variable height UITableView?

Calculate UIWebView height depending on its content

+2

लेकिन मैं UITableView में UIWebView है और प्रत्येक पंक्ति UIWebView है मैं तो कैसे की गणना क्योंकि तालिका ऊंचाई से पहले cellForRowAtIndex कहा जाता है की स्थापना की। – KPIteng

7

इस कोड

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{  
    height= [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue]; 
} 
9

खैर प्रयास करें, हर वेब दृश्य एक UIScrollView यह में बनाया गया है, तो मैं करने के लिए पेज के लिए इंतज़ार कर की कोशिश करेंगे स्क्रॉल व्यू की सामग्री में लोड करें और फिर टैप करें पृष्ठ की ऊंचाई प्राप्त करने के लिए आकार बदलें।

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    CGFloat height = webView.scrollView.contentSize.height; 
} 
+0

इस कोड में ऊंचाई क्या है। वेब दृश्य ऊंचाई के लिए कोई संपत्ति है। –

0

आप tableviewcell में वेबव्यू है, तो निम्न के रूप में heightForRowAtIndexPath में NSAttributedString आकार की ऊंचाई तक सेल की ऊंचाई सेट।

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 


    NSAttributedString *attributedText = [NSString getHTMLAttributedString:@"HTML Content"]; 
    CGSize size = CGSizeMake(300, CGFLOAT_MAX); 
    CGRect paragraphRect =  [attributedText boundingRectWithSize:size 
           options:(NSStringDrawingUsesLineFragmentOrigin) 
           context:nil]; 
    return paragraphRect.size.height; 
} 

+(NSAttributedString *) getHTMLAttributedString:(NSString *) string{ 
    NSError *errorFees=nil; 
    NSString *sourceFees = [NSString stringWithFormat: 
          @"<span style=\"font-family: 'Roboto-Light';font-size: 14px\">%@</span>",string]; 
    NSMutableAttributedString* strFees = [[NSMutableAttributedString alloc] initWithData:[sourceFees dataUsingEncoding:NSUTF8StringEncoding] 
                       options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
                          NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} 
                     documentAttributes:nil error:&errorFees]; 
    return strFees; 

} 
संबंधित मुद्दे