UITableView: программное изменение размера нижнего колонтитула не работает - PullRequest
19 голосов
/ 13 июля 2011

Нижний колонтитул моего табличного представления - это представление, показывающее некоторые твиты от пользователя, поэтому я не знаю его высоты, пока не получу твиты, я создал FooterViewController, у которого есть метод refreshTweets, я добавляю его в viewDidLoad:

FooterViewController *controller = [[FooterViewController alloc] initWithNibName...];
[[self tableView] setFooterView:[controller view]];
[controller refreshTweets];

в методе refreshTweets, я читаю твиты и вычисляю общую высоту, а также сбрасываю высоту представления (нижнего колонтитула):

self.view.frame = newFrame;

, но это такне имеет смысла, высота нижнего колонтитула по-прежнему равна высоте, которую я установил в Интерфейсном Разработчике, что-то отсутствует или есть какой-нибудь альтернативный способ сделать это?

Спасибо!

edit: я могу изменить представлениеразмер должен быть достаточно маленьким в конструкторе интерфейса, и он будет увеличен после вычисления высоты твитов и установки view.frame, но табличное представление все еще думает, что его нижний колонтитул имеет предыдущую высоту, то есть дополнительное пространство находится за пределами табличного представления, и яЯ могу видеть это, только если перетащу стол вверх.

Ответы [ 2 ]

43 голосов
/ 30 августа 2011
myTable.tableFooterView = myFooterView;

Переназначить вид нижнего колонтитула на таблицу. Таблица распознает, что у нее есть новый нижний колонтитул, и заново выполнит все необходимые макеты для правильного размера нижнего колонтитула.

0 голосов
/ 09 февраля 2017

Чтобы изменить кадр представления нижнего колонтитула, необходимо выполнить простую настройку: -

В 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
}
...