我加載任意長度的HTML字符串轉換爲UIWebView
,然後將其在一個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是webview中單元格的一些標題內容的高度。
我加載從筆尖細胞的「擴展視圖」,所以讓我打電話viewForTag web視圖:
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
對象,但從來沒有出於某種原因返回正確的數字。
Apple(在UIWebView文檔中)嚴格地說不要在UITableView中使用UIWebView。 – makboney
我們已經發布了幾個應用程序和網絡視圖作爲單元沒有任何問題 – Denis
同樣的問題的更多和更好的答案也可以在這裏找到[1]。 [1]:http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview –