所谓 In-call StatusBar 就是 iPhone 或者 iPad 在通话状态下,statusBar 高出20Px的情况,有的时候会发现,这高出的20px会对页面布局产生影响。
UIVIewController UINavigationController UITabBarController 三种情况下的不同表现
1. UIViewController:
in-Call:off
UIView: 0x4e2a1f0; frame = (0 20; 320 460);
in-Call:on
UIView: 0x4e2a1f0; frame = (0 40; 320 440);
2. UINavigationController:
in-Call:off
UILayoutContainerView: 0x4b35ab0; frame = (0 0; 320 480);
in-Call:on
UILayoutContainerView: 0x4e1b060; frame = (0 0; 320 480);
3. UITabBarController:
in-Call:off
UILayoutContainerView: 0x4b35ab0; frame = (0 0; 320 480);
in-Call:on
UILayoutContainerView: 0x4e1b060; frame = (0 0; 320 480);
在UIViewController下,界面会根据InCall的状态进行自我调整,界面缩短了20px,这个时候,在没有atuolayout 和 autoresizing 的情况下,view 上的控件可能会出现划出界面的情况。此时可以重写 viewController 的
// 所有的layout改变都会调用
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
}
进行界面布局调整。或者直接使用AutoLayout或者AutoResizing 就不会出现这个问题。