UITableViewCell在增加字体大小时更改标签约束

时间:2018-01-16 07:29:43

标签: swift uitableview nslayoutconstraint

我希望在增加字体大小时更改单元格中的标签顶部和底部约束:

   @IBAction func changeFontSize(_ sender: UIBarButtonItem) {
        fontSize += 2
        self.tableView.reloadData()
        self.tableView.reloadInputViews()
        self.tableView.setNeedsUpdateConstraints()

    }

在细胞中:

cellLabel.numberOfLines = 0
cellLabel.sizeToFit()


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


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableCells

    let cellTitle = dataArray.object(at: indexPath.row) as! NSString
    cell.cellLabel.attributedText = self.convertStringToAttributeText(text: cellTitle)


    let paragraphSpace = fontSize / 3
    cell.cellLabel.translatesAutoresizingMaskIntoConstraints = false

    let hConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[label]-20-|", options: .init(rawValue: 0), metrics: nil, views: ["label": cell.cellLabel])
    cell.contentView.addConstraints(hConstraints)

    let vConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|-\(paragraphSpace)-[label]-\(paragraphSpace)-|", options: .init(rawValue: 0), metrics: nil, views: ["label": cell.cellLabel])
    cell.contentView.addConstraints(vConstraints)



    return cell

}

自动细胞高度正常,但CONSTRAINTS不会改变!

1 个答案:

答案 0 :(得分:0)

来自Apple Documentation

  

在为iOS 8.0或更高版本开发时,请使用NSLayoutConstraint类的activate( :)方法,而不是直接调用addConstraints( :)方法。 activate(_ :)方法会自动将约束添加到正确的视图中。

另外,我建议覆盖单元格子类中的updateConstraints(),而不是每次使用单元格时删除并重新创建约束。