Как настроить строку состояния или безопасную область для удаления белого пространства на iPhone X?

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

Я установил цвет фона на то, что вы видите ниже.

view.backgroundColor = UIColor(red:0.227, green:0.251, blue:0.294, alpha:1)

Я также установил белый стиль строки состояния

UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

введите здесь описание изображения

Моя основная раскадровка

введите здесь описание изображения

введите здесь описание изображения  введите описание изображения здесь


person John Pollard    schedule 06.11.2017    source источник
comment
Трудно узнать без дополнительных деталей, но я предполагаю, что белая область - это UIView, которая использовалась для окраски области за строкой состояния на предыдущих устройствах iOS. Есть ли представление, которое добавляется в это место в раскадровке или в коде?   -  person nathangitter    schedule 06.11.2017
comment
@nathan Думаю, ты прав. Это часть представления, хотя я не знаю, как это пространство добавляется. Я опубликую больше изображений моей основной раскадровки.   -  person John Pollard    schedule 06.11.2017
comment
каковы ограничения вашего веб-просмотра?   -  person nathangitter    schedule 06.11.2017
comment
@nathan оказался ограничением WebView.top. Он был установлен в положение на основе супервизора. Я изменил его на безопасный ориентир, а затем установил ограничение -24. Я изменил это значение на 0. Не знаю, почему было 24, и я надеюсь, что теперь он будет работать правильно для всех типов телефонов!   -  person John Pollard    schedule 06.11.2017


Ответы (1)


Когда представление отображается на экране, это руководство отражает ту часть представления, которая не закрыта панелями навигации, панелями вкладок, панелями инструментов и другими представлениями-предками. (В tvOS безопасная область отражает область, не покрывающую лицевую панель экрана.) Если представление в настоящее время не установлено в иерархии представлений или еще не отображается на экране, края направляющей макета совпадают с краями представления.

Вам необходимо установить ограничения с помощью safeArea Установите верхние, нижние, ведущие, конечные ограничения webView с safeArea с константой 0, следовательно, ваши объекты не будут обрезаться. введите здесь описание изображения

Программно как

 webView.translatesAutoresizingMaskIntoConstraints = false
        if #available(iOS 11.0, *) {
            let guide = self.view.safeAreaLayoutGuide
            webView.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
            webView.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
            webView.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
            webView.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true
        }

SafeAreaGuide

person Jack    schedule 07.11.2017
comment
Я считаю, что это решило бы проблему. Я думаю, что мне также нужно было убедиться, что ограничение безопасной области для верха также было установлено на 0. Несмотря на то, что все мои ограничения веб-просмотра были установлены на 0, мне пришлось установить поле wC wR ограничения верхнего выравнивания на 0. - person John Pollard; 09.11.2017
comment
Да! Выровняйте по безопасной зоне с помощью constant =0 или выше - person Jack; 10.11.2017