如何在可变高度UITableView内基于内容确定UIWebView高度?

我正在尝试创建一个UITableView高度可变的行,如该问题的答案中所述


我的问题是每个单元格包含一个UIWebView具有不同(静态加载)内容的内容,我无法弄清楚如何根据该内容计算适当的高度。有没有办法做到这一点?我已经尝试过像这样的事情:


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

       WebViewCell *cell = (WebViewCell*)[self tableView:tableView cellForRowAtIndexPath:indexPath];

       [cell setNeedsLayout];

       [cell layoutIfNeeded];

       return cell.bounds.size.height;

    }

单元格本身是从笔尖加载的,而笔尖只是一个UITableViewCell包含的UIWebView。(虽然可变高度会更好,但是如果单元格只是将自身调整为最大的html内容也可以)。


梦里花落0921
浏览 535回答 3
3回答

哆啦的时光机

很高兴找到您的答案,JavaScript技巧对我来说效果很好。但是,我想说的还有“ sizeThatFits:”方法:CGSize goodSize = [webView sizeThatFits:CGSizeMake(anyWidth,anyHeigth)];我们必须将首选大小设置为零,但除此之外,它通常总是有效的!通常,因为使用UIWebViews,它似乎仅在第二次加载时起作用(我使用“ loadHTMLString:”方法,是的,我从委托“ didFinishLoad:”方法中调用“ sizeThatFits:”)。因此,这就是为什么我很高兴找到您的解决方案在任何情况下都有效的原因。

MM们

这似乎有效。目前。- (void)webViewDidFinishLoad:(UIWebView *)webView{    CGFloat webViewHeight = 0.0f;    if (self.subviews.count > 0) {        UIView *scrollerView = [self.subviews objectAtIndex:0];        if (scrollerView.subviews.count > 0) {            UIView *webDocView = scrollerView.subviews.lastObject;            if ([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView") class]])                webViewHeight = webDocView.frame.size.height;        }    }}如果失败,它应该安全地返回0。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS