【问题标题】: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)
                
    }
}    

【问题讨论】:

标签: ios swift uitableview


【解决方案1】:

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

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

【讨论】:

  • tableView.estimatedRowHeight = 80 tableView.rowHeight = UITableViewAutomaticDimension 这两个方法和heightForRowAtIndexPath做的一样。
  • 不,两者是相同的,但性能不同,例如.rowHeight是属性,heightForRowAtIndexPath是委托方法,这意味着如果生成单元格,那么每次都会调用委托方法。
  • 再次阅读此文档并检查此Tutorial
猜你喜欢
  • 2014-06-10
  • 1970-01-01
  • 2017-11-29
  • 2019-06-21
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2013-05-26
  • 2021-09-28
相关资源
最近更新 更多