У меня есть пользовательский uitableviewcell в приложении, я пытаюсь динамически обновлять его длину в зависимости от содержимого его подпредставлений (меток).
, но он не работает.
найдите соответствующий код, как показано ниже .
class TransactionTableViewCell: UITableViewCell{
private lazy var dateLabel: UILabel = {
let datelabel = UILabel()
datelabel.textColor = .label
datelabel.backgroundColor = .red
datelabel.lineBreakMode = .byTruncatingTail
datelabel.numberOfLines = 0
datelabel.translatesAutoresizingMaskIntoConstraints = false
return datelabel
}()
another method in same class:
func setupDefaultUI(){
self.contentView.addSubview(dateLabel)
}
override func awakeFromNib() {
super.awakeFromNib()
setupDefaultUI()
buildConstraints()
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupDefaultUI()
buildConstraints()
}
func buildConstraints(){
let marginGuide = self.contentView
NSLayoutConstraint.activate([
dateLabel.topAnchor.constraint(equalTo: marginGuide.topAnchor)
,
dateLabel.leadingAnchor.constraint(equalTo: marginGuide.leadingAnchor),
dateLabel.trailingAnchor.constraint(equalTo: marginGuide.trailingAnchor),
dateLabel.heightAnchor.constraint(greaterThanOrEqualToConstant: 1.0)
,
dateLabel.bottomAnchor.constraint(equalTo: marginGuide.bottomAnchor)
])
}
и внутри файла viewcontroller:
private lazy var transactionTableView: UITableView = {
let tableview = UITableView.init()
tableview.backgroundView = nil
tableview.backgroundColor = .clear
tableview.rowHeight = UITableView.automaticDimension
tableview.estimatedRowHeight = 300
return tableview
}()
и в viewdidload:
transactionTableView.dataSource = Objdatasource
transactionTableView.delegate = Objdelegate
transactionTableView.register(TransactionTableViewCell.self, forCellReuseIdentifier: CellIdentifiers.transactionCell)