Динамическая высота UITableView не будет работать идеально - PullRequest
0 голосов
/ 03 мая 2019

Я создал UITableView с динамической высотой заголовка и строк.

  • Высота ячеек 50pt для начала.
  • Высота заголовка 170pt для началас.

Вот как я его перезагружаю:

    self.tableQuestion.estimatedRowHeight = 50.0
    self.tableQuestion.relayoutTableHeaderView()
    self.tableQuestion.reloadData()
    self.tableHeightConstraint.constant = self.tableQuestion.contentSize.height + 50
    self.tableQuestion.layoutIfNeeded()

relayoutTableHeaderView функция:

extension UITableView {
    public func relayoutTableHeaderView() {
        if let tableHeaderView = tableHeaderView {
            let labels = tableHeaderView.findViewsOfClass(viewClass: UILabel.self)
            for label in labels {
                label.preferredMaxLayoutWidth = label.frame.width
                label.numberOfLines = 0
            }
            tableHeaderView.setNeedsLayout()
            tableHeaderView.layoutIfNeeded()
            tableHeaderView.frame.size.height = tableHeaderView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height + 30
            self.tableHeaderView = tableHeaderView
        }
    }
}

findViewsOfClass функция:

extension UIView {
    public func findViewsOfClass<T:UIView>(viewClass: T.Type) -> [T] {
        var views: [T] = []
        for subview in subviews {
            if subview is T {
                views.append(subview as! T)
            }
            views.append(contentsOf: subview.findViewsOfClass(viewClass: T.self))
        }
        return views
    }
}

Моя проблема в том, что это выглядит так:

table scrolling bug

Я хочу увеличить высоту UITableView вместо добавления прокрутки.

Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...