-2

我尝试为我的应用程序添加问答部分,并且 tableview 单元格必须根据文本高度扩展,单元格高度必须随此文本而变化。在这一点上,我做了一些事情来解决 numberOfline = 0 和 UITableView.automaticDimension 代码无法解决我的问题的问题。这是我的项目代码:

问题是单元格高度没有更改此代码,只需在问题下写标签,并在下一个问题下获得更长的答案。意味着单元格高度没有改变。

let soruLabel: UILabel = {
    let sorulabel = UILabel()
    sorulabel.textColor = .darkGray
    sorulabel.numberOfLines = 0
    sorulabel.font = UIFont.boldSystemFont(ofSize: 17)
    return sorulabel
}()

let cevapLabel: UILabel = {
    let cevaplabel = UILabel()
    cevaplabel.textColor = .black
    cevaplabel.numberOfLines = 0
    cevaplabel.font = UIFont(name: "HelveticaNeue", size: 18)
    return cevaplabel
}()

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    setup()
}

func set(content: expandingTableCellForsss) {
    self.soruLabel.text = content.soru
    self.cevapLabel.text = content.expanded ? content.cevap : ""
}

func setup() {
    backgroundColor = UIColor.init(red: 245, green: 245, blue: 245, alpha: 1)


    addSubview(soruLabel)
    addSubview(cevapLabel)


    soruLabel.translatesAutoresizingMaskIntoConstraints = false
    soruLabel.topAnchor.constraint(equalTo: topAnchor).isActive = true
    soruLabel.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
    soruLabel.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = false
    soruLabel.rightAnchor.constraint(equalTo: rightAnchor).isActive = true

    cevapLabel.translatesAutoresizingMaskIntoConstraints = false
    cevapLabel.topAnchor.constraint(equalTo: soruLabel.bottomAnchor).isActive = true
    cevapLabel.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
    cevapLabel.bottomAnchor.constraint(equalTo: soruLabel.bottomAnchor).isActive = false
    cevapLabel.rightAnchor.constraint(equalTo: rightAnchor).isActive = true




}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}

4

2 回答 2

0

请检查: 基于 UILabel 文本数量的 UITableViewCell 自动高度

在 UITableView 中使用自动布局进行动态单元格布局和可变行高

要使用动态单元格高度:1)在 viewDidLoad 中为单元格指定最小行高

tableView.estimatedRowHeight = 300

2)在viewDidLoad中将tableview的rowHeight属性设置为自动

tableView.rowHeight = UITableViewAutomaticDimension

3) 在情节提要中选择 numberOfLines = 0

4)如果您为故事板中的单元格提供了自定义高度,请确保其等于估计的行高。

于 2019-09-04T16:05:18.093 回答
0

底部锚点需要设置:

cevapLabel.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
于 2019-09-04T16:07:14.537 回答