UIWindow 在仅横向应用程序中出现在纵向

Posted

技术标签:

【中文标题】UIWindow 在仅横向应用程序中出现在纵向【英文标题】:UIWindow is appearing in Portrait in a Landscape only app 【发布时间】:2015-01-13 17:14:52 【问题描述】:
- (UIWindow *)overlayWindow 
    if (!_overlayWindow) 
        _overlayWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        [_overlayWindow makeKeyAndVisible];
        _overlayWindow.backgroundColor = [UIColor redColor];
        _overlayWindow.userInteractionEnabled = NO;
        _overlayWindow.frame = [UIScreen mainScreen].bounds;

        [_overlayWindow addSubview:self.dimmer];

    
    return _overlayWindow;

帧是正确的 - 0、0、1024、768。

该应用仅支持横向,如 info.plist 所确认(支持的界面方向 (iPad) 为横向左侧和横向右侧)。

但是,新窗口在 iPad 上出现在 0,0 处,就好像它是纵向的,并且与应用程序的其余部分成 90 度角。

窗口如下所示:

[self.overlayWindow setWindowLevel:UIWindowLevelStatusBar+1];
self.overlayWindow.alpha = 1;
self.overlayWindow.userInteractionEnabled = YES;

我做错了什么?我只是想创建一个新窗口并将其显示在应用程序的其余部分上,并使其像应用程序的主窗口一样定向。

【问题讨论】:

Ru 计划在主窗口顶部添加窗口或视图控制器 窗口是通过makeKeyAndVisible自动添加的吧? 【参考方案1】:

试试这样:

- (UIWindow *)overlayWindow 
    if (!_overlayWindow) 
         _overlayWindow = [[UIWindow new];
         [_overlayWindow makeKeyAndVisible];
         _overlayWindow.backgroundColor = [UIColor redColor];
         _overlayWindow.userInteractionEnabled = NO;
         _overlayWindow.frame = [UIScreen mainScreen].bounds;
         [_overlayWindow addSubview:self.dimmer];
    

    return _overlayWindow;

【讨论】:

您能否添加一点解释,说明究竟有什么不同以及为什么会有所帮助?

以上是关于UIWindow 在仅横向应用程序中出现在纵向的主要内容,如果未能解决你的问题,请参考以下文章

在仅纵向应用程序中以横向模式添加子视图

IOS6 横向在仅纵向 iPhone 应用程序中从 uiwebview 播放嵌入的 youtube 视频

iOS 8 - UIWindow 方向总是纵向的

uiwindow横向模式问题

UIWindow 的根视图控制器在应用启动时不会旋转到横向

在 iOS 12 版全纵向应用中以横向播放 AVKit 全屏视频