मैं UIWebView
में मनमानी लंबाई की एक HTML स्ट्रिंग लोड कर रहा हूं जिसे तब UITableViewCell
में प्रदर्शित किया जाता है। मैं UIWebView
को UITableView
से स्वतंत्र रूप से स्क्रॉल करने के लिए नहीं चाहता हूं इसलिए मुझे सामग्री को फिट करने के लिए अपनी ऊंचाई का आकार बदलना होगा।सामग्री फिट करने के लिए UIWebView ऊंचाई का आकार
यह UITableViewCell
भी ढहने योग्य है, UIWebView
दिखा रहा है जब यह इसके ध्वस्त राज्य में है।
रगड़ है, मुझे कैसे पता चलेगा कि यह ऊंचाई क्या है ताकि मैं heightForRowAtIndexPath
एक उचित मूल्य वापस कर सकूं और तालिका को सही ढंग से देखने और स्क्रॉल करने की अनुमति दे?
यहाँ कुछ उदाहरण कोड है:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0)
return 286;
if (indexPath.row == 1) {
if (analysisExpanded)
return analysisWebViewHeight + 39;
else
return 52;
}
if (sourcesExpanded)
return sourcesWebViewHeight + 39;
return 53;
}
सुंदर सरल। 39 वेबपेज के साथ सेल में मेरे कुछ हेडर सामान की ऊंचाई है।
मैं एक निब से सेल के "विस्तृत दृश्य" लोड हो रहा है कर रहा हूँ, इसलिए मैं वेबव्यू viewForTag फोन कर रहा हूँ प्राप्त करने के लिए:
UIWebView* sourcesWebView = (UIWebView*)[cell viewWithTag:1];
[sourcesWebView setBackgroundColor:[UIColor clearColor]];
[sourcesWebView loadHTMLString:placeholder baseURL:[NSURL URLWithString:@"http://example.com/"]];
sourcesWebViewHeight = [[sourcesWebView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] floatValue];
[sourcesWebView setFrame:CGRectMake(sourcesWebView.frame.origin.x, sourcesWebView.frame.origin.y, sourcesWebView.frame.size.width, sourcesWebViewHeight)];
sourcesWebViewHeight
एक इवर कि cellForRowAtIndexPath
में उपरोक्त कोड के द्वारा अद्यतन किया जाता है । यदि उपयोगकर्ता सेल को तीन बार टैप करता है, तो विस्तार-पतन-विस्तार करें, और थोड़ा स्क्रॉलिंग करता है, अंत में यह सही ऊंचाई प्राप्त करता है।
मैंने मेमोरी-केवल UIWebView
ऑब्जेक्ट का उपयोग कर ऊंचाई को "प्रीलोडिंग" करने का प्रयास किया, लेकिन किसी कारण से कभी भी सही संख्याएं वापस नहीं आईं।
NSInteger height = [[sourcesWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] integerValue];
document.documentElement.scrollHeight
इस ब्राउज़र के लिए काम नहीं कर रहा:
ऐप्पल (UIWebView दस्तावेज़ में) ने सख्ती से UITableView में UIWebView का उपयोग न करने के लिए कहा। – makboney
हमने बिना किसी समस्या के सेल के रूप में वेब-विज़ुअल के साथ कई ऐप्स प्रकाशित किए हैं – Denis
एक ही प्रश्न के अधिक और बेहतर उत्तर [यहां] [1] भी मिल सकते हैं। [1]: http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview –