Я пытаюсь понять, как view
, связанный с UITabBarController
, UINavigationController
или UIViewController
, реагирует на переключение строки состояния в вызове.
Моя проблема в том, что они, кажется, ведут себя по-разному, и это вызывает у меня побочные эффекты.
Я создал проект, который изменяет корневой контроллер окна для трех указанных выше типов, и я выкидываю description
из view
, чтобы получить координаты кадра.
статус inCall OFF :
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; ..
ON
UILayoutContainerView: 0x4e1b060; frame = (0 0; 320 480); autoresize = W+H; ..
В этом случае представление, обрабатываемое UINavigationController, не меняет свои свойства кадра при переключении строки состояния в вызове ?! (почему? :()
OFF
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...
ON
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...
То же, что и в UINavigationController
: view
из UITabBarController
, похоже, не изменяется при переключении строки состояния incall.
Может кто-нибудь объяснить мне, как работает это изменение размера при отображении строки состояния incall?
Моя конечная цель состоит в том, чтобы отобразить UIView
, которое отображается ABOVE целиком UITabBarController
, и которое правильно изменяется при отображении состояния входящего вызова. Однако я действительно не знаю, где поместить такое представление в иерархию представлений: если я добавлю его как дочерний вид представления UITabBarController, так как это не реагирует на отображение статуса incall, мое также не реагирует: (