外部显示窗口会影响主屏幕

时间:2013-11-01 20:56:04

标签: ios uiview ios7 uiwindow uiscreen

当有一个额外的屏幕(最多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;
}

2 个答案:

答案 0 :(得分:1)

因为您提到了“查看基于控制器的状态栏外观” - 同时尝试将“状态栏最初隐藏”设置为true。

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

答案 1 :(得分:0)

要正确处理不希望状态栏最初隐藏的情况,请在第二个窗口中提供rootViewController。这个rootViewController必须实现 - (BOOL)prefersStatusBarHidden。