自定义表格单元格未调整大小以适合内容视图

Posted

技术标签:

【中文标题】自定义表格单元格未调整大小以适合内容视图【英文标题】:Custom table cell not resizing to fit content view 【发布时间】:2017-01-08 05:50:51 【问题描述】:

我正在实现一个包含 3 种自定义单元格的表格视图。如下所示,在公司信息部分,我的自定义表格视图单元格CompanyInfoTableViewCell 的总部标签被截断,因为我认为自定义表格单元格没有调整大小以适应内容视图。

我尝试在包含表格视图的控制器的viewDidLoad 方法中实现以下代码。这段代码假设让单元格自动调整大小以适应内容,但它不起作用(编辑:它不起作用,因为我正在制作自定义单元格和表格视图 以编程方式不使用故事板)。如何让我的自定义表格视图单元格显示我的所有内容?

tableView.estimatedRowHeight = 80
tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.setNeedsLayout()
self.tableView.layoutIfNeeded()

CompanyInfoTableViewCell代码:

class CompanyInfoTableViewCell: UITableViewCell 
    override init(style: UITableViewCellStyle, reuseIdentifier: String?)         
        //Create industry label
        industryLabel = UILabel(frame: CGRect(x: horOffset, y: 0, width: 0.8*screenSize.width, height: 21))
        industryLabel.center.y = 15
        contentView.addSubview(industryLabel)

        
         //Create headquarters label
        hqLabel = UILabel(frame: CGRect(x: horOffset, y: 0, width: 0.8*screenSize.width, height: 21))
        hqLabel.center.y = 40
        contentView.addSubview(hqLabel)
                
    
    

【问题讨论】:

Using Auto Layout in UITableView for dynamic cell layouts & variable row heights的可能重复 请在情节提要中为您的视图添加底部约束,因为如果没有它,估计的行高将无法工作。当您的约束不起作用时,这是一个常见问题。 我正在尝试以编程方式执行此操作,我没有情节提要 您可以随时以编程方式添加底部约束 点击这个链接,如何给Constraints programatically和UITAbleviewCell constraints programatically 【参考方案1】:

如果您不使用情节提要和 AutoLayout 约束,则需要手动计算 UILabels 将根据其包含的内容所采用的高度。我没有看到任何代码可以根据内容计算高度并相应地设置标签的高度以及自定义单元格的高度。

您必须实现heightForRowAtIndexPath 来设置单元格的高度。

【讨论】:

tableView.estimatedRowHeight = 80 tableView.rowHeight = UITableViewAutomaticDimension 这两个方法和heightForRowAtIndexPath做的一样。 不,两者是相同的,但性能不同,例如.rowHeight是属性,heightForRowAtIndexPath是委托方法,这意味着如果生成单元格,那么每次都会调用委托方法。 你错了,检查developer.apple.com/library/content/documentation/… 再次阅读此文档并检查此Tutorial

以上是关于自定义表格单元格未调整大小以适合内容视图的主要内容,如果未能解决你的问题,请参考以下文章

我的自定义单元格未显示在我的表格视图中

自定义单元格未出现在表格视图中

根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小

自定义单元格未显示

调整 TableView 大小时,Swift 3.0 表格单元格未填充

从自定义表格视图单元格类加载时如何调整单元格的高度?