Я пытаюсь понять, как 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![enter image description here]()
Строка состояния 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, мое тоже не реагирует: (
