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可以填满所有可用区域。
我正在使用一个大约有 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可以填满所有可用区域。