У меня есть два контроллера представления, один из которых - UICollectionViewController
, а другой - UITableViewController
. Когда я запускаю приложение и проверяю иерархию представления отладки, представление сбора имеет рамку с источником (0,0), как и ожидалось, но происхождение представления таблицы (0, -44).
Я думаю, что проблема в следующем:
Я предполагаю, что это из-за авторазмера, потому что печать границ tableView в viewDidLoad()
показывает, что tableView имеет границы с origin (0,0), а печать границ tableView в viewDidLayoutSubviews()
показывает, что origin (0, -44 ).
Почему это проблема: Я добавляю UIView
в качестве подпредставления view
и пытаюсь изменить размер tableView, чтобы он заканчивался на определенной постоянной высоте над нижней частью экрана, с UIView
занимает оставшееся место в нижней части экрана. Это прекрасно работает в UICollectionViewController
, где у границ есть начало (0,0), но, поскольку у источника в tableView есть отрицательное значение y, UIView обрезается внизу экрана.
То, что я пробовал: Я установил источник границ tableView на CGPoint.zero
в viewDidLoad()
, но это не сработало, потому что его размер был изменен после viewDidLoad()
. Я установил источник границ tableView на CGPoint.zero
, а размер на значение, которое оставляло бы место для UIView
внизу (размер tableView - размер UIView) в viewDidLayoutSubviews()
, и это правильно изменило размер tableView , но по какой-то причине UIView
исчезло. Только корректировка источника tableView привела к тому, что UIView
отображался правильно, но tableView перекрывался с UIView
, что мне не нужно.
Кроме того, поскольку представление выкладывает подпредставления очень часто (например, при прокрутке tableView), приложение слишком часто запускает код в viewDIdLayoutSubviews()
, вызывая задержку.
Кроме того, я хотел бы, чтобы кто-нибудь мог объяснить, почему границы tableView изменяются до значения, отличного от CGPoint.zero
, тогда как collectionView остается на CGPoint.zero
Редактировать 1:
Снимки были запрошены в комментариях, поэтому вот скриншот UITableViewController
и правильного UICollectionViewController
, соответственно (я не смог правильно изменить размер изображений, поэтому, надеюсь, это достаточно хорошо):
![enter image description here](https://i.stack.imgur.com/TbQQat.png)
Здесь приведены ссылки на полноразмерные изображения для
UITableViewController и UICollectionViewController .
Редактировать 2:
Я также напечатал ограничения view
и tableView
, и ни у одного из них нет никаких ограничений.