Table 通过代码更改 table 字体大小时,查看自动尺寸不适合

Table view automatic dimension not fit when change table font size by code

当使用 table 查看 xib 单元格时,我有标签,我将约束顶部、右侧、左侧、底部设置为零行的内容视图,并且 table 视图自动尺寸在这种情况下工作正常。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeue() as NotificationCell
    return cell
}

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return 1000
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
    
}

中以编程方式更改标签字体大小时
override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    label.font = UIFont(name: "fontName", size: 20)
}

此处单元格高度的问题是旧字体标签大小取自情节提要,高度仅在滚动和 table 视图重新加载后正确

那是因为 awakeFromNib() 是在单元格大小确定后调用的。我建议您在调用 awakeFromNib() 之前设置字体大小。一个建议是:

@IBOutlet var label: UILabel! {
    didSet{
       label.font = UIFont(name: "fontName", size: 20)
    }
} 

通过这种方式,您可以在超级视图调用布局子视图之前设置字体大小。