iPhone X: небезопасная область не получает цвет ближайшего вида

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

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

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

как сделать так, чтобы небезопасная область окрашивалась в соответствии с ближайшим представлением, которое связано с ней с автоматическими ограничениями макета?


person JAHelia    schedule 23.10.2017    source источник


Ответы (1)


Вот пример расположения безопасных зон на вашем iPhone X.

https://1.bp.blogspot.com/-nKGb8plVgd8/Wdir-wLm6tI/AAAAAAAADmo/z3G6lWBlomASUtRJ6COYYKPdPC6KdMlBACLcBGAs/s1600/safe_area.png

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

Используя два представления, одно сверху с верхним ограничением, связанным с superview (в соответствии с активацией SafeAreaLayout в вашей раскадровке), а другое сразу за последним с его верхним ограничением, связанным с >верхняя безопасная зона. После этого свяжите их с вашим контроллером представления и управляйте цветом в методе viewDidLoad.

Другой вариант, вероятно, проще, если использовать только одно представление. Установите верхнее, начальное и конечное ограничения для Superview (а не для макета безопасной области). Чтобы избежать ошибки построителя интерфейса, установите фиксированную высоту для вашего представления.

Теперь он должен работать правильно.

person Antoine Rucquoy    schedule 23.10.2017