【问题标题】:Window for an External Display affects primary screen外接显示器的窗口影响主屏幕
【发布时间】:2013-11-01 20:56:04
【问题描述】:

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

【问题讨论】:

    标签: ios uiview ios7 uiwindow uiscreen


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多