TableView неожиданно изменяет размеры границ - PullRequest
0 голосов
/ 09 января 2019

У меня есть два контроллера представления, один из которых - 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 enter image description here

Здесь приведены ссылки на полноразмерные изображения для UITableViewController и UICollectionViewController .

Редактировать 2:

Я также напечатал ограничения view и tableView, и ни у одного из них нет никаких ограничений.

...