我正在尝试理解UITabBarController
,UINavigationController
或UIViewController
关联的view
在切换呼叫状态栏时的反应。
我的问题是它们似乎表现不同,这给我带来了副作用。
我制作了一个项目,更改上述3种类型的窗口的根视图控制器,并转储view
的description
以获取框架坐标。
UIViewController
呼叫状态关闭:
UIView:0x4e2a1f0; frame = (0 20; 320 460); autoresize=W+H; ....开启
UIView:0x4e2a1f0; frame = (0 40; 320 440); autoresize=W+H; ...
我明白这个:当呼叫状态栏出现时,UIViewController的视图高度会减少并且失去20,并且它的y坐标从20移动到40。
太棒了!我期望在将经典的UIViewController
替换为UITabBarController
或UINavigationController
时会有相同的结果,但事实并非如此!
UINavigationController
呼叫状态栏关闭
UILayoutContainerView:0x4b35ab0; frame = (0 0; 320 480); autoresize=W+H; ..开启
UILayoutContainerView: 0x4e1b060; frame = (0 0; 320 480); autoresize = W+H; ..在这种情况下,当呼叫状态栏切换时,由UINavigationController处理的视图不会更改其frame属性?!(为什么?:()
UITabBarController
关闭时
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...打开时
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...
与UINavigationController
中的情况相同:当切换到incall状态栏时,UITabBarController
的view
似乎不会受到影响。
有人能解释一下当显示incall状态栏时,如何进行此调整大小?
我的最终目标是显示一个在整个UITabBarController
上面显示的UIView
,并且在显示呼叫状态时可以正确调整大小。 但是,我真的不知道在视图层次结构中放置这样的视图:如果将其添加为UITabBarController的子级,则此视图不会响应incall状态显示,我的也不会响应:(