Заголовок таблицы перекрывает ячейки - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть контроллер представления с представлением таблицы. Tableview имеет заголовок табличного представления и динамические ячейки. Я добавил UIView в качестве заголовка табличного представления, и он имеет несколько меток с динамической высотой. Все отлично работает.

Но проблема возникает, когда размер представления (используемого в качестве заголовка табличного представления) увеличивается из-за дополнительной высоты меток (потому что она расширяется из-за дополнительного содержимого), используемых в представлении.

В результате верхние ячейки табличного представления скрываются или перекрываются представлением заголовка. Кто-нибудь может мне помочь с этим сценарием? Все это сделано с использованием раскадровок.

1 Ответ

0 голосов
/ 27 апреля 2019

Вы не можете изменить высоту заголовка табличного представления, когда добавляете его в раскадровку. Создайте заголовок табличного представления программно и return UITableView.automaticDimension в методе heightForHeaderInSection.

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.estimatedSectionHeaderHeight = 100
    tableView.sectionHeaderHeight = UITableView.automaticDimension
}

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = UIView()

    let lbl = UILabel()
    lbl.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
    lbl.numberOfLines = 0
    lbl.lineBreakMode = .byWordWrapping
    lbl.translatesAutoresizingMaskIntoConstraints = false
    header.addSubview(lbl)

    header.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-(10)-[lbl(>=30)]-(10)-|", options: [], metrics: nil, views: ["lbl":lbl]))
    header.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-(30)-[lbl]-(30)-|", options: [], metrics: nil, views: ["lbl":lbl]))
    return header
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return UITableView.automaticDimension
}
...