【发布时间】:2011-07-26 01:58:32
【问题描述】:
我试图了解与UITabBarController、UINavigationController 或UIViewController 关联的view 在通话状态栏切换时如何反应。
我的问题是它们的行为似乎不同,这会给我带来副作用。
我创建了一个项目,为上述 3 种类型更改窗口的根视图控制器,并转储 view 的 description 以获取框架坐标。
<strong>UIViewController</strong>
通话状态关闭:
UIView: 0x4e2a1f0;帧 = (0 20; 320 460); 自动调整大小 = W+H; …… 开启UIView: 0x4e2a1f0;帧 = (0 40; 320 440); 自动调整大小 = W+H; ...
这个我明白了:当通话状态栏出现时,UIViewController的view的高度缩小了20,它的y坐标从20移动到了40。
太完美了!当用UITabBarController 或UINavigationController 替换经典的UIViewController 时,我会期待同样的结果,但事实并非如此!
-
<strong>UINavigationController</strong>
InCall 状态栏关闭
UILayoutContainerView: 0x4b35ab0;帧 = (0 0; 320 480); 自动调整大小 = W+H; ..开启
UILayoutContainerView: 0x4e1b060;帧 = (0 0; 320 480); 自动调整大小 = W+H; ..
在这种情况下,由 UINavigationController 处理的视图在切换通话状态栏时不会更改其框架属性?! (为什么?:()
<strong>UITabBarController</strong>
关闭
UIView: 0x4b2f6a0;帧 = (0 20; 320 460); 自动调整大小 = W+H; ...开启
UIView: 0x4b2f6a0;帧 = (0 20; 320 460); 自动调整大小 = W+H; ...
与UINavigationController 相同:切换调用状态栏时,UITabBarController 的view 似乎没有受到影响。
有人可以解释一下在显示调用状态栏时这种调整大小的工作原理吗?
我的最终目标是显示一个UIView,它在整个UITabBarController 上显示ABOVE,并且在显示通话状态时正确调整大小。但是,我真的不知道将这样的视图放在视图层次结构中的哪个位置:如果我将它添加为 UITabBarController 视图的子视图,因为这个视图不会对调用状态显示做出反应,我的也不会做出反应: (
【问题讨论】:
标签: iphone uitabbarcontroller statusbar in-call