Ключевое окно пользовательского приложения «руководство по компоновке безопасной области» исключает панель вкладок и панель навигации

#swift #uinavigationbar #uitabbar #safearealayoutguide #keywindow

#swift #панель навигации uinavigationbar #uitabbar #safearealayoutguide #keywindow

Вопрос:

Я пытаюсь отобразить всплывающее окно сверху и снизу моего контроллера представления. Однако руководство «Макет безопасной области» не включает ни панель навигации, ни панель вкладок внизу. Строка состояния включена. Я хочу показать всплывающее окно под моей панелью навигации.

Панель навигации не включена в безопасную область

Вот мой код:

 guard let rootView = UIApplication.shared.windows.filter({$0.isKeyWindow}).first else {return}
        

let toastView = ToastView(title: title, message: message, type: type)
toastView.translatesAutoresizingMaskIntoConstraints = false

rootView.addSubview(toastView)

NSLayoutConstraint.activate([
                    toastView.centerXAnchor.constraint(equalTo: rootView.centerXAnchor),
                    toastView.leadingAnchor.constraint(greaterThanOrEqualTo: rootView.leadingAnchor, constant: 20),
                    toastView.topAnchor.constraint(equalTo: rootView.safeAreaLayoutGuide.topAnchor, constant: 0)
])
 

Комментарии:

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

2. Поэтому вместо использования окна используйте представление контроллера корневого представления окна и посмотрите, работает ли это лучше.