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