UIWindow 没有为新设备填满屏幕?

UIWindow not filling screen for new devices?

我正在使用一个大约有 7/8 年历史的旧 Xcode 项目,我已将其迁移到 Objective-C 2.0 并支持 ARC。在我处理它之前,该项目不支持自动布局(这是在它发布之前)。我已经设法在更现代的 Xcode IDE (10.2.1) 中清除了 运行 中的很多 errors/issues。出于测试目的,我已将此代码实施到 AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height)];
[self.window setBackgroundColor:[UIColor redColor]];

self.window.rootViewController = [UIViewController new];
[self.window makeKeyAndVisible];

return YES;
}

出于某种原因给了我这个:

这是我 运行 在 iPhone X、iPhone XR 或 iPhone XS Max 上的结果,它看起来像顶部和底部边距(安全区域)的屏幕没有被拾取。当我调试视图层次结构时,它们都没有被拾取,它只显示红色 space?当我将此代码放入新项目时,它工作正常并填满了所有 space。我想知道因为这是一个旧项目,所以可能有一个构建设置限制 UIWindow 扩展以允许支持新设备?

另请注意,我已确保 UIWindow 对象未在其他地方被操纵。

尝试将 "Launch screen interface file base name" (UILaunchStoryboardName) 添加到您的 Info.plist

似乎这个键的存在告诉系统你本身支持新的设备类型和尺寸类,所以你的window可以填满所有可用区域。