UIWindow не заполняет экран для новых устройств? - PullRequest
1 голос
/ 09 июля 2019

Я работаю со старым проектом XCode, которому примерно 7/8 лет, и я перенес его в Objective-C 2.0 и для поддержки ARC.Проект не поддерживал Auto-Layout (это было как раз перед его выпуском) до того, как я над ним работал.Мне удалось устранить многие ошибки / проблемы, которые у меня были с запуском в более современной среде разработки Xcode (10.2.1).В целях тестирования я внедрил этот код в 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;
}

, что по какой-то причине дает мне следующее:

image

Это результаткогда я работаю на iPhone X, iPhone XR или iPhone XS Max, похоже, что верхние и нижние поля (безопасные области) экрана не видны.Когда я отлаживаю иерархию представления, к которой они не обращаются, это просто показывает красное пространство?Когда я добавляю этот код в новый проект, он работает нормально и заполняет все пространство.Мне интересно, что из-за того, что это старый проект, может быть параметр сборки, который ограничивает расширение UIWindow для поддержки новых устройств?

Также в качестве примечания я убедился, чтоUIWindow Объект не используется в другом месте.

1 Ответ

3 голосов
/ 09 июля 2019

Попробуйте добавить «Базовое имя файла интерфейса экрана запуска» (UILaunchStoryboardName) в ваш Info.plist

Кажется, что наличие этого ключа говорит системе, что вы изначально поддерживаете новые типы устройств и классы размеров, поэтому ваше окно может заполнить всю доступную область.

...