У меня есть приложение под названием BzCalendar, созданное где-то в 2011 году.
Так что с Objective-C и без раскадровки.
Я нахожусь в процессе преобразования в Swift с раскадровкой, еще не закончено.
Мое приложение представляет собой приложение календаря с ежедневным, еженедельным и ежемесячным просмотром.
Верхняя конфигурация приложения.
Когда я запускаю симулятор iPhoneX, макет сверху и снизу - это не то, чего хочет яблоко.
Сначала я подумал, что это как-то связано с приложением, программно устанавливающим рамку представления.
Однако, похоже, проблема заключается в том, что мое приложение всегда корректирует вид содержимого с шириной «320».
Я полагаю, что когда придет iPhone5 или около того, в iOS появится конвертирование представления в ширину 320 для спасения приложения, не поддерживающего новый размер экрана.
Я проверяю размер с кодом:
override func viewDidLayoutSubviews() {
print("frame: ", self.view.frame)
print("safeAreaInsets", self.view.safeAreaInsets)
}
Результат:
кадр: (0,0, 0,0, 320,0, 485,0)
safeAreaInsets UIEdgeInsets (вверху: 44,0, слева: 0,0, снизу: 0,0, справа: 0,0)
320!
Сейчас пытаюсь запустить с iPhone8
кадр: (0,0, 0,0, 320,0, 519,0)
safeAreaInsets UIEdgeInsets (вверху: 20,0, слева: 0,0, снизу: 0,0, справа: 0,0)
Затем я создал новый проект на XCode9 и создал простое приложение:
UITabBarController
- UIViewController
с тем же тестовым кодом выше:
Результат:
кадр: (0,0, 0,0, 375,0, 812,0)
safeAreaInsets UIEdgeInsets (вверху: 44,0, слева: 0,0, снизу: 83,0, справа: 0,0)
Кто-нибудь сталкивался с подобной проблемой раньше и знает, что с этим делать?
Я ожидаю 2 этапа крепления:
1) изменить конфиг xcode? использовать реальный размер экрана.
2) сделать дополнительные работы, необходимые для iPhoneX
Пожалуйста, помогите мне!