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:
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>
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.
Les étapes suivantes ont fonctionné pour moi:
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.
Si vous utilisez uniquement Images.xassets, "Launch Screen File" doit être vide. Ça m'a aidé.
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/
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:
Il y a 2 parties à cette solution:
Info.plist
'_ UILaunchImages
array avant les éléments iOS 8 de la réponse de @ AlexArgo.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>
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>
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.
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.
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!