web-dev-qa-db-fra.com

Comment créer des images de lancement pour les applications iPhone 6/6 Plus Landscape Only?

J'ai une application existante uniquement pour le paysage pour laquelle j'essaie d'ajouter la prise en charge de l'iPhone 6/iPhone 6 Plus. Lorsque je prenais iOS 6/7 en charge, j’utilisais simplement les images de portrait de lancement nommées par défaut avec une image de paysage tournée en portrait (c.-à-d. Pour les écrans 4 ", j’ai créé un paysage 1136x640, puis pivoté pour créer une image de lancement 640 × 1136.)

J'essaie de faire fonctionner quelque chose pour iOS 8 et iPhone 6/6+ et je n'ai pas encore trouvé quelque chose qui fonctionne. Voici certaines choses que j'ai essayées:

  1. Suivez le modèle de convention d’image de lancement d’écran de 4 ". J’ai créé les images [email protected] et [email protected]. Cela a empêché le simulateur de fonctionner à la résolution appropriée pour iPhone 6/6 +, mais lors du lancement, Une image de lancement d'écran de 4 "est utilisée, pas les nouvelles que j'ai créées.
  2. Utiliser un catalogue d’actifs - Je crée des images de lancement portrait pour iPhone 6 et iPhone 6 Plus dans un actif LaunchImages, ainsi qu’un paysage un pour iPhone 6 Plus. L'iPhone 6 Plus fonctionne, mais l'iPhone 6 n'affiche qu'un écran noir. (Il n'y a aucun moyen de créer une image de lancement paysage iPhone 6 dans un catalogue d'actifs)
  3. Spécifiez le tableau UILaunchImages dans Info.plist avec des entrées pour toutes les tailles d'écran (voir la référence https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#// Apple_ref/doc/uid/TP40009252-SW28 ). J'obtiens des résultats similaires à ceux d'un catalogue de biens ici. Je peux faire fonctionner le paysage iPhone 6 Plus, mais pas le paysage iPhone 6.
60
Alex Argo

J'ai trouvé une solution de contournement qui fait que les images en mode paysage ne fonctionnent que sur iOS 8 GM. J'ai fini par utiliser le tableau UILaunchImages dans Info.plist. L'astuce consiste à faire apparaître une image qui ne prend pas explicitement en charge le paysage (iPhone 4/4S, iPhone 5/5S/5C, iPhone 6), vous devez donc spécifier des entrées en double. Voir mon exemple ci-dessous. Ceci est pour une application de téléphone paysage qui prend en charge les deux orientations pour iPad. iOS 7 aura recours aux noms d'image par défaut.

Toutes les images de lancement iPhone doivent être tournées en orientation portrait comme d'habitude SAUF pour l'image de lancement iPhone 6 Plus. Il prend en charge de manière native les images de lancement en orientation paysage. Vous devez donc laisser son image de lancement en orientation paysage.

Voici des extraits pertinents de votre 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>
75
Alex Argo

Le motif a changé pour l'iPhone 6, etc.

iPhone 6 ( 750x1334 ):

Default-375w-667h@2x~iphone.png

iPhone 6 Plus: ( 1242x2208 )

Default-414w-736h@3x~iphone.png

[email protected] (pour paysage)

Notez que si vous prenez en charge l'iPad, vous devez renommer les images par défaut de votre iPad pour ajouter ~ ipad, par exemple. Default-Portrait ~ ipad.png pour empêcher le 6 plus de les prendre car ceux-ci ont priorité sur l’image 3x.

61
malhal

Les étapes suivantes ont fonctionné pour moi:

  1. Ajoutez les images au projet (répertoire racine ou dossier Ressources) avec la proposition d'inscription suivante (je vais les décrire dans Portrait launchimages): Default.png (3,5 pouces), [email protected] (4 pouces), Default- [email protected] (iPhone 6), [email protected] (iPhone 6plus).
  2. Accédez aux paramètres de la cible, Icônes d'application et images de lancement dans l'onglet Général -> Définissez l'option Lancer la source d'images pour qu'elle n'utilise pas le catalogue d'actifs ('Ne pas utiliser de catalogues d'actifs').
  3. Supprimer l'actif LaunchImage de votre actif d'image principal
  4. Accédez aux paramètres de la cible, aux icônes de l'application et aux images de lancement dans l'onglet Général -> Configurer la source d'images de lancement pour utiliser le catalogue d'actifs.
  5. Le XCode 6 va vous interroger sur la migration des ressources d’image à partir des images existantes. Cliquez simplement sur 'Migrer'.

Et cela a fonctionné pour moi pour chaque type d'appareils sur iOS7, iOS8. Remarque: Si vous vérifiez le nouvel actif LaunchImage, vous constaterez qu'il est vraiment étrange. Il semble contenir que quelques images sans les images avec la résolution iPhone6 ​​ou iPhone 6plus.

14
ingaham

Si vous utilisez uniquement Images.xassets, "Launch Screen File" doit être vide. Ça m'a aidé.

"Launch screen file" is empty

11
Nadzeya

Pour iPhone 6:

750 x 1334 (@ 2x) pour portrait
1334 x 750 (@ 2x) pour paysage

Pour iPhone 6 Plus:

1242 x 2208 (@ 3x) pour portrait
2208 x 1242 (@ 3x) pour le paysage

ou vous pouvez passer par ce lien, il peut vous aider

http://matthewpalmer.net/blog/2014/09/10/iphone-6-plus-launch-image-adaptive-mode/

11
Amit Saini

Ceci est une suite de la réponse de @ AlexArgo qui l'étend de manière à ce que les applications compatibles avec iOS 9 uniquement en mode paysage affichent les images de lancement appropriées sur les iPhones iOS 9. Comme pour cette réponse, aucun catalogue de ressources, storyboard ou xib n'est requis.

Sans ces ajouts, nous avons constaté que le lancement de notre application en mode paysage sur un iPhone iOS 9 affichait la même image que pour iOS 8, mais que cette image était pivotée de 90 degrés dans le sens des aiguilles d'une montre et déformée par un étirement aux dimensions opposées. .

Écran de lancement de pré-réparation pour iPhone iOS 9: Pre-Fix iOS 9 iPhone Launch Screen

Il y a 2 parties à cette solution:

  1. Ajoutez les éléments iOS 9 ci-dessous à votre Info.plist '_ UILaunchImages array avant les éléments iOS 8 de la réponse de @ AlexArgo.
  2. Ajoutez les nouvelles images de lancement référencées dans les éléments iOS 9 ci-dessous (par exemple. Default-iOS9-568h) à votre application. Les nouvelles images de lancement sont des images réelles "paysage" (plus larges qu'elles ne sont hautes), contrairement aux images référencées par iOS 8 de @ AlexArgo qui ont commencé en tant qu'images de paysage, mais ont ensuite été pivotés selon l'orientation portrait avant d'être ajoutés à l'application. Notez que les deux ensembles d'images doivent rester dans l'application pour que cette solution fonctionne simultanément sur iOS 8 et 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>
    

Écran de lancement postérieur au iOS 9 pour iPhone: enter image description here

4
janoside

Pour travailler avec ipad (mode paysage et portrait), vous devez ajouter la clé ILaunchImages ~ ipad dans votre info.plist:

<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>
2
Myrddin

Ce que j'ai fait est de changer mon projet pour NE PAS utiliser un catalogue d'actifs pour les images de lancement et utiliser l'ancienne technique pour iOS7 et les versions antérieures. Cela permet aux images de lancement de fonctionner pour iOS7 et les versions antérieures.

Pour qu'ils fonctionnent également sur iOS8 afin d'obtenir la résolution correcte et de faire reconnaître votre application comme étant conçue pour le nouvel iPhone 6/+, vous devez également créer un nouveau fichier LaunchImage XIB et indiquer à Xcode de l'utiliser.

Ce qui semble arriver, c'est que le lancement de l'application sur un appareil iOS8 utilise la nouvelle technique XIB, et que le lancer sur un appareil iOS7 ou antérieur utilise les images que vous connaissez et appréciez.

Cela semble fonctionner pour moi. C'est moche OMI, mais ça marche.

J'espère que cela aide certaines personnes.

1
PKCLsoft

Pour tous les iPhones sauf le plus, il n'y a pas d'écran de lancement séparé pour les applications en mode paysage uniquement. Vous définissez l'orientation dans la fenêtre comme décrit par Deepak, puis vous définissez votre écran de lancement portrait sur la version pivotée de votre écran de lancement en mode paysage.

C’est comme cela que cela a toujours été et la seule chose qui a changé est que le plus prend désormais en charge un écran de lancement paysage distinct et distinct. Tous les autres appareils ne prennent toujours en charge que les écrans de lancement Portrait, quelle que soit l'orientation de départ de votre application.

1
nheagy

vous ajoutez simplement [email protected], il se corrigera également pour Landscape. J'ai également une application en mode paysage pour iPhone 6 et iPhone 6 Plus et cela fonctionne sans problème!

0
wagashi