我试图了解 view
如何关联到UITabBarController
, UINavigationController
或UIViewController
当通话状态栏切换时使用react。
我的问题是它们的行为似乎不同,这会给我带来副作用。
我制作了一个项目,用于更改上述 3 种类型的窗口的 Root View Controller ,并转储 description
view
的获取框架坐标。
-
<strong>UIViewController</strong>
通话状态关闭:
UIView: 0x4e2a1f0; frame = (0 20; 320 460); autoresize = W+H; ....开启
UIView: 0x4e2a1f0; frame = (0 40; 320 440); autoresize = W+H; ...
我的理解是:当通话状态栏出现时,UIViewController的 View 高度缩小并失去20,并且其y坐标从20移动到40。
太完美了!我希望在更换经典 UIViewController
时也能得到同样的结果与 UITabBarController
或UINavigationController
但事实并非如此!
<strong>UINavigationController</strong>
通话中状态栏关闭
UILayoutContainerView: 0x4b35ab0; frame = (0 0; 320 480); autoresize = W+H; ..开启
UILayoutContainerView: 0x4e1b060; frame = (0 0; 320 480); autoresize = W+H; ..
在这种情况下,当通话中状态栏切换时,UINavigationController 处理的 View 的框架属性不会更改?! (为什么?:()
<小时/>-
<strong>UITabBarController</strong>
关闭
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...开启
UIView: 0x4b2f6a0; frame = (0 20; 320 460); autoresize = W+H; ...
与UINavigationController
中的相同:view
UITabBarController
的切换通话状态栏时似乎不会受到影响。
有人可以解释一下在显示通话状态栏时调整大小是如何工作的吗?
我的最终目标是显示 UIView
显示在上方整个UITabBarController
并且在显示通话状态时会正确调整大小。但是,我真的不知道将这样的 View 放在 View 层次结构中的哪里:如果我将其添加为 UITabBarController View 的 subview ,因为这个 View 不会对调用状态显示使用react,所以我的 View 也不会使用react: (
最佳答案
切换通话状态栏时 View 的高度取决于其锚定方式。
使用 UIView 的 autoResizingMask 来控制当通话状态栏显示时 View 是否应该向下移动或调整大小。
这两个属性,
UIViewAutoresizingFlexibleTopMargin
UIViewAutoresizingFlexibleHeight
会帮助你的。第一个将 View 向下推,第二个改变大小。
关于iphone - 通话中状态栏如何影响 ViewController View 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486491/