我试图理解如何view
关联到一个UITabBarController
, UINavigationController
or UIViewController
当通话状态栏切换时做出反应。
我的问题是它们的行为似乎不同,这会给我带来副作用。
我制作了一个项目,更改上述 3 种类型的窗口的根视图控制器,然后转储description
of the view
获取框架坐标。
通话状态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
with a UITabBarController
or a UINavigationController
但事实并非如此!
通话中状态栏OFF
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
: the view
of the UITabBarController
切换通话状态栏时似乎不会受到影响。
有人可以解释一下在显示通话状态栏时调整大小是如何工作的吗?
我的最终目标是展示UIView
显示的是ABOVE整体UITabBarController
并且在显示通话状态时会正确调整大小。但是,我真的不知道将这样的视图放在视图层次结构中的哪里:如果我将其添加为 UITabBarController 视图的子视图,因为这个视图不会对调用状态显示做出反应,所以我的视图也不会做出反应: (