当有一个额外的屏幕(最多2个)时,我会创建一个新窗口。每个窗口在不同的屏幕中显示不同的内容。
问题出在iOS7下:创建和显示此外部窗口使状态栏在第一个中可见,这也是主要状态栏。然后,系统会添加一些空间(20个点)来重新排列顶部栏和一些视图。它对我不起作用,因为它是一个自定义栏。
为什么会发生这种情况?如何阻止系统添加状态栏?
这是有问题的代码:
- (void) handleScreenConnectNotification:(NSNotification*)notification
{
NSLog(@"screens=%@ _secondWindow = %@",[UIScreen screens], _secondWindow );
if ( [[UIScreen screens] count] > 1) {
// Associate the window with the second screen.
// The main screen is always at index 0.
UIScreen * secondScreen = [[UIScreen screens] objectAtIndex:1];
CGRect screenBounds = secondScreen.bounds;
_secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];
_secondWindow.screen = secondScreen;
_secondWindow.hidden = NO;
}
}
我尝试将_secondWindow的帧更改为更小的区域。没有解决问题。
要处理状态栏,应用程序配置如下
在app属性列表下:查看基于控制器的状态栏外观= YES
我为每个视图添加了此代码,我不想显示状态栏:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
答案 0 :(得分:1)
因为您提到了“查看基于控制器的状态栏外观” - 同时尝试将“状态栏最初隐藏”设置为true。
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
答案 1 :(得分:0)
要正确处理不希望状态栏最初隐藏的情况,请在第二个窗口中提供rootViewController。这个rootViewController必须实现 - (BOOL)prefersStatusBarHidden。