UITableViewController и безопасная область - PullRequest
0 голосов
/ 18 июня 2020

Я использую подкласс UITableViewController для поддержки моего очень простого контроллера табличного представления. Примерно так:

enter image description here FriendsViewController enter image description here

class FriendsViewController: UITableViewController {


    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.insetsContentViewsToSafeArea = true

    }
}

Однако в виде таблицы покрывает безопасную безопасную зону. Это особенно очевидно, когда я просматриваю эмулятор iPhone X.

enter image description here

Я ожидал увидеть что-то вроде этого:

enter image description here

Я пробовал использовать tableView.insetsContentViewsToSafeArea в соответствии с приведенным выше фрагментом кода, но он не выполняет то, что указано в документации Apple:

Когда значение этого свойства равно true (по умолчанию), табличное представление корректирует вставки представления содержимого в каждой из своих ячеек, верхних и нижних колонтитулов на передней и конечной сторонах, чтобы содержимое соответствовало безопасной области. .

Мне известны альтернативные решения без UITableViewController, но я специально хочу использовать его (это очень удобно) и ожидаю, что смогу настроить его так, чтобы он вел себя должным образом и соблюдал правила безопасности. площадь. Было бы не поверить в то, что Apple разработала сломанный компонент.

В любом случае, ни один из сообщений с подобными вопросами не помог, так что надеюсь на бесплатный sh запуск.

1 Ответ

1 голос
/ 18 июня 2020

То, что вы видите, нормально и правильно. Табличное представление - это полный вид контроллера представления, охватывающий весь экран. Он по-прежнему отлично работает, потому что прокручиваемое содержимое вставлено, поэтому пользователь может прокручивать, чтобы увидеть все части таблицы; верх таблицы вставлен вниз. Так что все хорошо.

Если вам действительно нужен эффект, показанный на вашем последнем снимке экрана, вам придется сделать контроллер табличного представления дочерним контроллером представления какого-либо другого контроллера представления. Типичный интерфейс - обернуть контроллер табличного представления в контроллер навигации так, чтобы панель навигации заполняла верхнюю часть экрана. Или вы можете вручную использовать представление контейнера / встраивать переход.

...