Как создать изображения запуска для iPhone 6/6 Plus только для ландшафтных приложений?
У меня есть существующее приложение только для ландшафта, которое я пытаюсь добавить для поддержки iPhone 6/iPhone 6 Plus. Когда я поддерживал iOS 6/7, я просто использовал начальные портреты с именем по умолчанию с ландшафтным изображением, повернутым в портретный (т.е. Для 4 "экранов, я создал ландшафт 1136x640, а затем повернул его, чтобы создать изображение запуска 640 × 1136).
Я пытаюсь получить что-то, работающее на iOS 8 и iPhone 6/6+, и не придумал что-то, что работает. Вот некоторые вещи, которые я пробовал:
- Следуйте шаблону для соглашения об изображении для экрана с разрешением 4 дюйма. Я создал Default [email protected] и изображения по умолчанию [email protected] Это помогло симулятору работать при правильном разрешении iPhone 6/6 +, но когда запускается 4-дюймовое изображение запуска экрана, а не новые, которые я создал.
- Использование каталога активов. Я создаю изображения запуска для iPhone 4 и iPhone 6 Plus в активе LaunchImages, а также ландшафтный для iPhone 6 Plus. IPhone 6 Plus работает, но iPhone 6 просто показывает черный экран. (Нет способа создать изображение для запуска ландшафта iPhone 6 в каталоге активов)
- Укажите массив UILaunchImages в Info.plist с записями для всех размеров экрана (см. ссылку https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW28). Я получаю аналогичные результаты в каталоге активов здесь. Я могу работать с ландшафтом iPhone 6 Plus, но не с iPhone 6.
Ответы
Ответ 1
Я нашел обходное решение, которое делает пейзажные работы только для запуска работы на iOS 8 GM. Я закончил использование массива UILaunchImages в Info.plist. Фокус в том, чтобы показать изображение, которое явно не поддерживает ландшафт (iPhone 4/4S, iPhone 5/5S/5C, iPhone 6), вам нужно указать повторяющиеся записи. См. Мой пример ниже. Это для ландшафтного только телефонного приложения, которое поддерживает обе ориентации для iPad. iOS 7 вернется к именам изображений по умолчанию.
Все изображения запуска iPhone должны быть повернуты в портретную ориентацию, как обычно, ИСКЛЮЧИТЬ для изображения запуска iPhone 6 Plus. Он изначально поддерживает изображения с ориентацией на альбомную ориентацию, поэтому вам нужно оставить изображение запуска в альбомной ориентации.
Вот соответствующие биты вашего Info.plist:
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-568h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-568h</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-667h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-667h</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-736h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{414, 736}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-736h</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{414, 736}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-Portrait</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-Landscape</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
</array>
Ответ 2
Шаблон изменился для iPhone 6 и т.д.
iPhone 6 (750x1334):
[email protected]~iphone.png
iPhone 6 Plus: (1242x2208)
[email protected]~iphone.png
[email protected](для пейзажа)
Обратите внимание, что если вы поддерживаете iPad, вы должны переименовать свои изображения по умолчанию для iPad, чтобы добавить ~ ipad, например. Default-Portrait ~ ipad.png, чтобы не допустить, чтобы 6 плюс отбирали их, потому что они переопределили изображение 3x.
Ответ 3
Для меня работали следующие шаги:
- Добавьте изображения в проект (корневой каталог или папку "Ресурсы" ) со следующей номинацией (я опишу их в изображениях "Портрет" ): Default.png(3,5 дюйма), по умолчанию [email protected](4 дюйма), [email protected](iPhone 6), [email protected](iPhone 6plus).
- Перейдите в целевые настройки, иконки приложений и запустите изображения на вкладке "Общие" → "Установить источник запуска", чтобы не использовать каталог активов ( "Не использовать каталоги активов" ).
- Удалите актива LaunchImage из основного ресурса изображения.
- Перейдите в целевые настройки, иконки приложений и запустите изображения на вкладке "Общие" → "Установить источник запуска для использования каталога активов"
- XCode 6 собирается спросить вас о миграции объектов изображений из существующих изображений. Просто нажмите "Миграция".
И он работал у меня для каждого типа устройств на iOS7, iOS8.
Заметка:
Если вы проверите новый актив LaunchImage, вы увидите, что это действительно странно. Кажется, он содержит только несколько изображений без изображений с разрешением iPhone6 или iPhone 6plus.
Ответ 4
Для iPhone 6:
750 x 1334 (@2x) для портрета
1334 x 750 (@2x) для пейзажа
Для iPhone 6 Plus:
1242 x 2208 (@3x) для портрета
2208 x 1242 (@3x) для пейзажа
или вы можете пройти через эту ссылку, это может помочь вам
http://matthewpalmer.net/blog/2014/09/10/iphone-6-plus-launch-image-adaptive-mode/
Ответ 5
Если вы используете только Images.xassets, "Launch Screen File" должен быть пустым.
Это помогло мне.
!["Launch screen file" is empty]()
Ответ 6
Это ответ на ответ @AlexArgo, который расширяет его, так что приложения, поддерживающие только iOS 9, показывают соответствующие изображения запуска на iPhone iOS 9. Как и в случае с этим ответом, не требуется каталог активов, раскадровка или xib.
Без этих дополнений поведение, которое мы видели, заключалось в том, что запуск нашего ландшафтного приложения на iPhone iOS 9 отображал то же изображение, что и для iOS 8, но изображение поворачивалось на 90 градусов по часовой стрелке и искажалось, растягиваясь до противоположного -ориентационные размеры.
Предварительно исправить экран запуска iPhone iOS 9:
![Предварительно исправить iOS 9 iPhone Launch Screen]()
В этом решении есть две части:
- Добавьте следующие элементы iOS 9 в массив
Info.plist
UILaunchImages
до элементов iOS 8 из ответа @AlexArgo.
-
Добавьте в приложение новые изображения запуска, указанные в следующих элементах iOS 9 (например, Default-iOS9-568h
). Новые изображения запуска фактические "ландшафтные" изображения ориентации (шире, чем они высоки), в отличие от изображений, на которые ссылаются элементы @AlexArgo iOS 8, которые начинались как пейзажные изображения, но затем были повернуты к портретной ориентации перед добавлением в приложение. Обратите внимание, что оба набора изображений должны оставаться в приложении для этого решения для работы на iOS 8 и 9 одновременно.
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>9.0</string>
<key>UILaunchImageName</key>
<string>Default-iOS9</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>9.0</string>
<key>UILaunchImageName</key>
<string>Default-iOS9-568h</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>9.0</string>
<key>UILaunchImageName</key>
<string>Default-iOS9-667h</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
</dict>
...(pre-iOS 9 items)...
</array>
Post-fix экран запуска iPhone iOS 9:
![введите описание изображения здесь]()
Ответ 7
Чтобы работать с ipad (альбомный и портретный режим), вам нужно добавить в свой info.plist UILaunchImages ~ ipad:
<key>UILaunchImages~ipad</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-Landscape</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-Portrait</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-Landscape</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{748, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-Portrait</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1004}</string>
</dict>
</array>
Ответ 8
Для всех iPhone, кроме плюса, нет отдельного экрана запуска для приложений только для ландшафта. Вы устанавливаете ориентацию в plist, как описано Deepak, а затем вы устанавливаете экран запуска вашего портрета на повернутую версию экрана запуска ландшафта.
Так оно и было, и единственное, что изменилось, - это то, что теперь plus поддерживает отдельный экран отображения ландшафта. Все остальные устройства по-прежнему поддерживают только экраны запуска, независимо от начальной ориентации вашего приложения.
Ответ 9
То, что я сделал, это изменить мой проект, чтобы НЕ использовать каталог активов для запуска изображений и использовать старый метод для iOS7 и ранее. Это получает изображения запуска, работающие для iOS7 и ранее.
Чтобы они также работали на iOS8, чтобы вы могли получить правильное разрешение, и ваше приложение признано, что оно создано для нового iPhone 6/+, вам также нужно создать новый XIBX LaunchImage и сообщить Xcode об использовании этого.
Что происходит, так это то, что запуск приложения на устройстве iOS8 использует новый метод XIB, а запуск его на устройстве iOS7 или более раннем устройстве использует изображения, которые вы уже знаете и любите.
Это для меня, похоже, работает. Это уродливое ИМО, но оно работает.
Надеюсь, это поможет некоторым людям.
Ответ 10
вы просто добавляете [email protected], тогда он будет исправляться и для пейзажа. У меня также есть приложение для всего экрана для iPhone 6 и iPhone 6 Plus, и оно работает без проблем!
Ответ 11
Чтобы запустить приложение в ландшафтном режиме, отредактируйте файл Info.plist, чтобы добавить ключ UIInterfaceOrientation с соответствующим значением (UIInterfaceOrientationLandscapeRight или UIInterfaceOrientationLandscapeLeft), как следующий код. Это дает подсказку системе, чтобы установить ориентацию строки состояния надлежащим образом во время запуска.
Листинг 1: Запуск приложения в ландшафтном режиме
<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
для получения дополнительной информации нажмите здесь