Настройка видов, когда строка состояния скрывается при вращении
Я искал ответ на этот вопрос, но нашел только людей с похожими проблемами, а не с этой, поэтому, надеюсь, кто-то здесь может мне помочь!
У меня есть приложение для iPad. На iPad, когда вы держите iPad в книжной или альбомной ориентации, всегда отображается строка состояния с часами и батареей. По этой причине у меня есть несколько пользовательских панелей инструментов в верхней части некоторых из моих контроллеров представления, которые учитывают эти 20 точек.
Сейчас я работаю над тем, чтобы сделать мое приложение универсальным. Первое, что я заметил, это то, что когда iPhone помогает в портретном режиме, отображается строка состояния, но когда она удерживается в ландшафтном режиме, строка состояния скрывается, и теперь у меня есть панель инструментов, которая на 20 пунктов выше.
Я не заинтересован в том, чтобы всегда скрывать или показывать строку состояния. Я думаю, что функциональность скрытия его в ландшафтном режиме на телефоне в порядке. Что я хочу сделать, так это уметь определять, когда строка состояния скрыта, чтобы я мог отрегулировать положение Y на моей панели инструментов (поэтому установите его либо в 0, либо в -20). Еще лучшим решением было бы, если бы у меня был способ установить ограничения макета для обработки этого сценария.
1 ответ
Правильный подход:
Используйте обычную панель инструментов с нормальной высотой - не устанавливайте никаких ограничений на высоту.
Добавьте ведущее ограничение 0 к суперпредставлению (не поле суперпредставления), конечное ограничение 0 к суперпредставлению (не поле суперпредставления)
Добавьте верхнее ограничение 0 в верхнее руководство по макету (или в верхнюю часть безопасной области). Похоже, что это оставит 20 пикселей пространства над панелью инструментов, но рассмеяться злой смех и продолжить.
Установите контроллер представления в качестве делегата панели инструментов (для этого есть выход делегата).
Пусть контроллер представления примет UIBarPositionDelegate и реализует метод делегата следующим образом:
class ViewController: UIViewController, UIBarPositioningDelegate { func position(for bar: UIBarPositioning) -> UIBarPosition { return .topAttached } }
Это приведет к тому, что кажущаяся высота панели инструментов будет увеличена за строкой состояния, когда есть строка состояния, но она будет иметь нормальную высоту и ударить по вершине, когда строка состояния отсутствует.