Я создал 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](https://i.stack.imgur.com/CLzdb.gif)
Я хочу увеличить высоту UITableView
вместо добавления прокрутки.
Как я могу это исправить?