Основные границы UIScreen не учитывают фактический размер экрана устройства - PullRequest
0 голосов
/ 29 января 2019

Я хотел создать проект без раскадровок.

Я удалил раскадровки Main и LaunchScreen.

Как обычно, я добавил в свое приложениеDidFinishLaunchingWithOptions:

        window = UIWindow(frame: UIScreen.main.bounds
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()

Теперь в настройках проекта -> Общие, если я оставляю файл экрана запуска пустым UIScreen.main.bounds равно

(CGRect) $R12 = (origin = (x = 0, y = 0), size = (width = 320, height = 480))

И я получаю следующий экран:

enter image description here

Теперь, если я добавлю что-то в поле Launch Screen File, в Info.plist -> Information Property List появится новая строка с ключом Launch screen interface file base name, и границы будут правильными.Границы верны, даже если значение пустое.

Почему существование Launch screen interface file base name влияет на границы UIScreen?

1 Ответ

0 голосов
/ 29 января 2019

Это началось в iOS 8.0, когда iPhone 6 / 6plus был выпущен (пользователь TheFuquan прокомментировал это с выпуском iPhone 5), в 2014 году. Тогда, если вы хотите поддерживать такие новые устройства, вам определенно понадобится, как это былотребуется, чтобы добавить правильный экран запуска.Либо через статическое изображение с разными размерами для каждого поддерживаемого вами устройства, либо через xib / раскадровки.

Теперь вы уже ответили на свое замешательство.Способ исправить это - предоставить правильный стартовый экран / образ.

Рекомендации Apple по интерфейсу пользователя (экран запуска): https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/launch-screen/

...