外部显示窗口影响主屏幕

当有一个额外的屏幕(最多2)时,我创build一个新的窗口。 每个窗口在不同的屏幕上显示不同的内容。

问题是在iOS7下:创build并显示这个外部窗口使状态栏在第一个可见的,这也是主要的。 然后,系统添加一些空间(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的框架更改为更小的区域。 不解决问题。

要处理状态栏,应用程序是这样configuration的在应用程序属性列表中:基于视图控制器的状态栏外观=是
我为每个视图添加了这个代码,我不想显示状态栏:

 - (BOOL)prefersStatusBarHidden { return YES; } 

因为您提到了“基于视图控制器的状态栏外观”,所以也尝试将“状态栏最初隐藏”设置为true。

 <key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> 

为了正确地处理这种情况,您不希望最初隐藏状态栏,请在第二个窗口中提供一个rootViewController。 这个rootViewController必须实现 – (BOOL)prefersStatusBarHidden。