我有一个表视图,其中包含一个嵌入了UIWebView的静态单元格。静态单元格位于第一个也是唯一一个区域,是tableview中的第二个静态单元格。我试图根据我传递给loadHTMLString方法的HTML动态更改UIWebView和UITableViewCell的大小。代码如下。
在viewDidLoad中:
[self.wbvArticle loadHTMLString:result baseURL:nil];
[self.wbvArticle setDelegate:self];
[self.wbvArticle.scrollView setScrollEnabled:NO];
[self.wbvArticle.scrollView setBounces:NO];
还有以下内容:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 1)
{
return contentHeightForCell;
}
else return 282;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
contentHeightForCell = [[self.wbvArticle stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] floatValue];
CGRect rect = self.wbvArticle.frame;
rect.size.height = contentHeightForCell;
self.wbvArticle.frame = rect;
[self.wbvArticle sizeToFit];
[self.tableView beginUpdates];
[self.tableView endUpdates];
}
当我在模拟器中运行它时,表格单元格的大小正确,但webview不是。有没有人看到任何与众不同的东西?我已经搜索了网络和stackoverflow,但一直无法找到任何解决方法。
感谢您的帮助。
答案 0 :(得分:4)
您需要计算webview的高度并使用此新高度重新加载表格。
1)在@interface部分
中创建局部变量float webViewHeight;
2)然后在tableView
的cellForRowAtIndexPath
中指定此高度
[webView setFrame:CGRectMake(0, 0, CELL_CONTENT_WIDTH, webViewHeight)];
3)同时在tableview的heightForRowAtIndexPath
中设置高度
if (indexPath.row == 0) {
return webViewHeight;
}
4)最后计算高度并重新加载tableview
- (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;
webViewHeight = fittingSize.height;
[self.tableView reloadData];
}
答案 1 :(得分:2)
或者,您可以使用
#pragma mark - WebView Delegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
self.webViewHeight = webView.scrollView.contentSize.height;
[self.tableView reloadData];
}