Я бы предпочел создать подкласс UIView, который оборачивает представление таблицы и представление плавающего нижнего колонтитула.Я избегаю изменять иерархию представлений классов, полностью управляемых фреймворком, и используя подкласс, было бы легко использовать этот макет в другом месте.Используя событие делегата представления прокрутки scrollViewDidScroll
, оно будет обновлять рамку нижнего колонтитула каждый раз, когда пользователь выполняет прокрутку.Кстати, я бы, конечно, использовал ограничения для размещения моего нижнего колонтитула, а не играл с кадрами, которые могут быть изменены.
Есть ли что-то вредное в вашей реализации?
Вы не упомянули, где вы добавили свой код.Если это viewDidLoad, то у вас будут проблемы, если вы используете автоматическое расположение, и кадр представления изменяется из-за поворота или изменения набора признаков.Кроме того, если ваш контент не является статичным, вызов данных перезагрузки сделает недействительным размер содержимого табличного представления, что также создаст неуместное представление нижнего колонтитула.
Где мы должны поместить эти строки кода?
Должны ли мы KVO наблюдать за рамкой табличного представления и его содержимым, чтобы обновлять рамку нижнего колонтитула при каждом их изменении?
Конечно нет!Apple уже предоставила все нужные нам события.По крайней мере, поместите эти строки в viewDidLayoutLayouts
и убедитесь, что вы не добавляете нижний колонтитул несколько раз.viewDidLayoutLayouts
вызывается каждый раз, когда выкладывается вид контроллера.