UITableView: изменение размера просмотра нижнего колонтитула программно не работает
Нижний стол таблицы представляет собой представление, которое показывает некоторые твиты от пользователя, поэтому я не знаю его высоты, пока не получил твиты, я создал FooterViewController, у которого есть метод refreshTweets, я добавляю его в viewDidLoad:
FooterViewController *controller = [[FooterViewController alloc] initWithNibName...];
[[self tableView] setFooterView:[controller view]];
[controller refreshTweets];
в методе refreshTweets, я прочитал твиты и вычислил общую высоту и высоту reset (нижний колонтитул):
self.view.frame = newFrame;
но это не имеет смысла, высота нижнего колонтитула по-прежнему является той высотой, которую я установил в Interface Builder, нет ли чего-либо или какого-либо альтернативного способа сделать это?
Спасибо!
изменить:
Я могу изменить размер представления, чтобы быть достаточно маленьким в построителе интерфейса, и он будет увеличен после вычисления высоты твитов и установки view.frame, но в представлении таблицы по-прежнему считается, что нижний колонтитул имеет предыдущую высоту, то есть дополнительное пространство находится за пределами таблицы, и я могу видеть это только в том случае, если я перетащил таблицу вверх.
Ответы
Ответ 1
myTable.tableFooterView = myFooterView;
Повторно назначьте представление нижнего колонтитула таблице. Таблица распознает, что у нее есть новый нижний колонтитул и повторное выполнение любого макета для правильного размера нижнего колонтитула.
Ответ 2
Для изменения рамки нижнего колонтитула здесь используется простая настройка: -
В Swift: -
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.5
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView()
let footerChildView = UIView(frame: CGRect(x: 60, y: 0, width: tableView.frame.width - 60, height: 0.5))
footerChildView.backgroundColor = UIColor.darkGray
footerView.addSubview(footerChildView)
return footerView
}