Как изменить цвет нижнего края на iPhone X программно?

Он изменяется на их родной клавиатуре /emoji-плате, в зависимости от того, какой из них открыт. Я думал, что это изменит цвет автоматически на основе UIInputViewController, однако это не происходит с пользовательскими расширениями клавиатуры:

enter image description here

Ответ 1

Одна вещь, которую вы можете сделать, чтобы решить эту проблему. Измените backgroundcolor вашего ViewController View для home indicator. И установите status bar appearance отдельно с помощью coding в соответствии с вашими потребностями.

Это изменит ваш home indicator, status bar color плюс safe area до Chocolate color, добавит separate view в safe area для вашего другого design, поскольку я добавил yellow.

enter image description here enter image description here

enter image description here

Если вам нужен другой цвет для status bar, вызовите его где-нибудь из viewDidLoad с viewDidLoad color -

func setStatusBarBackgroundColor(color: UIColor) {

        guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
        statusBar.backgroundColor = color
    }  

enter image description here

Помимо этого, вы не сможете делать никаких других изменений appearance, по крайней мере пока, пока яблоко не обеспечит какой-либо способ контроля appearance вида home indicator. позволь мне показать тебе.

enter image description here

Это доступность баров, где вы можете контролировать appearance. Нет home indicator bar Apple, которая предусматривает ее изменение.

Это единственные бары, которые вы можете контролировать внешний вид -
Навигационные бары
Поиск баров
Базы статуса
Tab Bars
Инструментальные панели

Реферальная ссылка - Руководство по интерфейсу iPhone-X

Ответ 2

Если вы хотите использовать другой цвет фона для макета, который отличается с верхним и нижним краями, или хотите сохранить цвет фона строки состояния при переключении приложений, вы можете попробовать добавить два разных вида с высотой 50 или более (pt) для другого цвета фона. в каждом макете перо Один ограничивает выравнивание по нижней части верхней части безопасной области, другой ограничивает выравнивание по верхней части нижней части безопасной области, а затем делает IBOutlet ссылку на эти два представления для программной установки backgroundColor в коде.