Я пытаюсь понять, как представление
связано с UITabBarController
, UINavigationController
или UIViewController
реагирует на переключение строки состояния во время разговора.
Моя проблема в том, что они, кажется, ведут себя по-разному, и это вызывает у меня побочные эффекты.
Я сделал проект, который изменяет контроллер корневого представления окна для 3 типов выше, и я сбрасываю описание
представления
, чтобы получить координаты кадра.
UIViewController
статус inCall ВЫКЛ :
UIView: 0x4e2a1f0; frame = (0 20; 320 460); autoresize = W+H; ....ON
UIView: 0x4e2a1f0; frame = (0 40; 320 440); autoresize = W+H; ...
Вот это я понимаю: когда появляется строка состояния во время вызова, высота представления UIViewController уменьшается и теряет 20, а его координата y перемещается с 20 на 40.
Это прекрасно! Я бы ожидал того же при замене классического UIViewController
на UITabBarController
или UINavigationController
, но это не так!
UINavigationController
Строка состояния InCall ВЫКЛ
UILayoutContainerView: 0x4b35ab0; frame = (0 0; 320 480); autoresize = W+H; ..ВКЛ
UILayoutContainerView: 0x4e1b060; frame = (0 0; 320 480); autoresize = W+H; ..
В этом случае у представления, обрабатываемого UINavigationController, не изменяются свойства фрейма при переключении строки состояния текущего вызова ?! (почему? :()
UITabBarController
OFF
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...ON
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...
То же, что и в UINavigationController
: вид
из UITabBarController
, похоже, не изменяется при переключении строки состояния при вызове.
Может кто-нибудь объяснить мне, как работает это изменение размера при отображении строки состояния при вызове?
Моя конечная цель - отобразить UIView
, который отображается НАД всем UITabBarController
и правильно меняет размер при отображении статуса входящего вызова. Однако я действительно не знаю, где разместить такое представление в иерархии представлений: если я добавлю его как дочерний элемент представления UITabBarController, поскольку он не реагирует на отображение состояния вызова, мой также не реагирует: (