Как создать изображения запуска для 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.

Ответ 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> 

для получения дополнительной информации нажмите здесь