Игнорировать safeAreaInsets в tableView, встроенном в scrollView - PullRequest
0 голосов
/ 30 сентября 2018

Моя проблема может быть немного особенной, но тем не менее:

Моя иерархия представлений выглядит так (упрощенно):

View Hierarchy

TableView встроен в UINavigationController.

Теперь я установил свои ограничения следующим образом (с помощью Anchorage):

scrollView.edgeAnchors == edgeAnchors

NavWithTableView.widthAnchor == widthAnchor
NavWithTableView.heightAnchor == heightAnchor - offset

scrollView.edgeAnchors == NavWithTableView.edgeAnchors

Теперь safeAreaInsets создает небольшой пробел, делающий вид первой ячейкинемного больше, чем остальные.Следующая картина показывает проблему.Я пометил разрыв красной рамкой.Первая ячейка отображается зеленым цветом.Как вы можете видеть на левом рисунке, в результате safeAreaInset существует разрыв в 20pt, UIKit добавляет учет в строку состояния.Когда я нажимаю кнопку редактирования, safeAreaInsets исправляет себя, и разрыв исчезает (правое изображение).Каким-то образом UIKit считает, что, поскольку NavWithTableView прикреплен к вершине scrollsView (а scrollView - к вершине superView), он должен дать дополнительный 20pt safeAreaInset, что не соответствует действительности, поскольку NavWithTableView смещается через scrollView.Панель навигации даже учитывает смещение и отображается немного меньше.

The Problem

Мой вопрос (ы): Что здесь происходит?Это ошибка?Я что-то не так делаю?

Спасибо за помощь!

...