web-dev-qa-db-fra.com

Lancer les écrans supportant iOS6 et iOS7 - forcé à ouvrir l'écran

En ce qui concerne l'écran de lancement, je ne trouve pas de moyen unificateur d'imiter l'aspect de l'application sur iOS6 et iOS7 (prenant en charge les deux). Sommes-nous obligés de créer un écran de démarrage régulier avec un logo ou un objet similaire si nous avons un menu dans la barre d’outils ou avez-vous une bonne idée de comment le résoudre?

23
FBL

Réponse courte

Dans iOS 7, une application peut utiliser une image de lancement différente selon la version d'iOS dans laquelle elle s'exécute. Pour fournir différentes images de lancement, ajoutez la clé UILaunchImages au fichier Info.plist et utilisez un dictionnaire pour décrire chaque lancement. image.

Contexte

Il utilise les clés suivantes:

UILaunchImageName - Chaîne contenant le nom du fichier image PNG. Le fichier image doit résider au niveau supérieur de l'ensemble d'applications . Le nom que vous spécifiez pour cette clé ne doit pas inclure de nom de fichier extension, il ne devrait pas non plus inclure de modificateurs tels que @ 2x, -568h, ~ iphone, ou ~ ipad.

Sur le disque, les noms de fichiers de vos images peuvent toujours inclure les @ 2x, -568h, ~ iphone, ou ~ modificateurs ipad selon le cas, bien qu’ils ne le soient pas Champs obligatoires. Le système comptabilise automatiquement ces modificateurs lorsque choisir quel fichier charger.

UILaunchImageMinimumOSVersion - pour iOS7, il doit s'agir d'une chaîne «7.0».

UILaunchImageOrientation - Chaîne contenant l'un des éléments suivants: Portrait, PortraitUpsideDown, Paysage, LandscapeLeft, LandscapeRight.

UILaunchImageSize - String spécifiant la largeur et la hauteur, ex: “{320, 480}”. Vous devez spécifier la largeur et la hauteur par rapport à l'appareil en orientation portrait. En d'autres termes, portrait et les images de paysage ciblant le même appareil auront la même largeur et la hauteur.

Si cette clé est présente, iOS 7 l'utilise exclusivement pour obtenir le lancement images. 

MAIS: J'ai constaté que le respect de la convention de dénomination également pour iOS7 a beaucoup aidé!

Cette clé est prise en charge dans iOS 7.0 et versions ultérieures.

OK - alors maintenant quoi?

Parce que j'avais déjà des images de lancement pour iOS6 et avec toutes leurs conventions de dénomination spécifiques. J'ai choisi de faire une copie de chacun d'entre eux et de préfixer le nom avec «iOS7-» afin de limiter ma propre confusion au sujet de toutes les tailles et de tous les noms. Faire un préfixe devrait s'avérer utile car la plupart des images seraient immédiatement chargées correctement.

Les noms de fichiers: Je les avais déjà pour iOS6, je liste également les tailles de fichiers pour ceux qui en ont besoin:

  • Default.png (320x480)
  • [email protected] (640x960)
  • Default@2x~ipad.png (2048x1496)
  • Valeur par défaut ~ ipad.png (768x1004)
  • Default1024x768.png (1024x768)
  • [email protected] (2048x1536)
  • Valeur par dé[email protected] (640x1136)
  • Default768x1024.png (768x1024)
  • [email protected] (1536x2048)
  • Paysage par défaut ~ ipad.png (1024x748)
  • Default-Portrait@2x~ipad.png (1536x2048)

J'ai donc fait une copie de tous ces noms de fichiers pour iOS7 (mêmes tailles) en les préfixant avec "iOS7-":

En XCode

Maintenant, créez votre entrée dans PLIST. Accédez à votre nom d'application.plist. Dans une zone vide, cliquez avec le bouton droit de la souris et choisissez «Ajouter une ligne». Assurez-vous qu’il devient un élément supérieur et non un sous-élément d’une autre information de la liste .plist.

Ecrire: UILaunchImages

Cliquez avec le bouton droit de la souris sur cette UILaunchImages et sélectionnez le type de valeur «Array».

Utilisez l'illustration ci-dessous comme guide du texte et de son apparence une fois terminé:

enter image description here

Si vous ouvrez ce tableau de sorte que le petit triangle indicateur situé à gauche pointe vers le bas, il est vide la première fois, mais si vous choisissez «Ajouter une ligne» pendant qu'il est ouvert, cela créera une sous-ligne. Faites cela maintenant:

Cliquez avec le bouton droit sur UILaunchImages et sélectionnez «Ajouter une ligne» . Cliquez avec le bouton droit de la souris sur cette nouvelle ligne (élément 0) et sélectionnez le type de valeur «Dict».

Continuez à ouvrir ces éléments avec l'indicateur de triangle et faites un clic droit et "Ajouter une ligne"

Vous nommerez cet élément UILaunchImageMinimumOSVersion et définissez le type de valeur sur «chaîne» et la chaîne sur «7.0».

Les éléments suivants sont maintenant des chaînes et doivent être au même niveau que l’élément UILaunchImageMinimumOSVersion. Dans le même dict (dictionnaire). Créez-les en sélectionnant simplement «Ajouter une ligne» pour chacun:

UILaunchImageName - nom-base-de-iOS7-launch-image. Dans mon cas, c'était "iOS7-Default"

UILaunchImageOrientation - exemple: Portrait

UILaunchImageSize - taille de la base élémentaire iOS7-Default.png: "{320, 480}". Le programme trouvera tous les fichiers avec les permutations du nom de base. N'oubliez pas de sélectionner le nom de base du fichier sans spécifications ipad/iphone/portrait/landscape ou .png.

Remarque:

Xcode avait déjà créé les éléments suivants dans la liste .plist après avoir d'abord ajouté des images iOS6 dans tous les emplacements disponibles :-)

UILaunchImageFile ~ ipad… = ”Par défaut” - c'était donc OK

UILaunchImages ~ ipad… Avait deux éléments qui devaient être mis à jour vers les versions iOS7, car ils contenaient maintenant de manière incorrecte la version iOS6. Ceux que j'avais nommés Default1024x768 et Default768x1024 et maintenant, je viens de préfixer «iOS7-» à chacun des noms et j'ai terminé.

Exemple de recherche possible pour ceux qui souhaitent modifier directement un plist:

<key>UILaunchImages</key>
  <array>
    <dict>
      <key>UILaunchImageMinimumOSVersion</key>
      <string>7.0</string>
      <key>UILaunchImageName</key>
      <string>iOS7-Default </string>
      <key>UILaunchImageOrientation</key>
      <string>Portrait</string>
      <key>UILaunchImageSize</key>
      <string>{320, 480}</string>
    </dict>
  </array>

[edit by jd: correction de l'orthographe de "UILaunchImages"]

73
WWW

Mettez le projet en surbrillance dans le navigateur de projet, sélectionnez "Général", faites défiler jusqu'à "Icônes d'application", cliquez sur "Utiliser le catalogue d'actifs", puis sélectionnez "Migrer". Vos icônes et écrans de démarrage existants seront automatiquement migrés dans un catalogue d’actifs. Vous pouvez ensuite sélectionner le catalogue pour ajouter d'autres images.

Pour ajouter de nouvelles images, il vous suffit de faire glisser le curseur depuis le Finder et de les déposer dans les carrés de chaque type d'image.

(Attention: l'éditeur de catalogue utilise de manière inexplicable un format large non défilable. Il se peut que vous manquiez d'éléments du côté droit si votre écran n'est pas suffisamment large.)

8
Hot Licks

Vous pouvez également utiliser la nouvelle fonctionnalité catalogue d'images de Xcode 5 pour gérer plusieurs versions d'images de lancement.

5
smacdonald

J'ai également eu le même problème avec une ancienne application que j'avais développée pour iOS 7. Elle archivait et téléchargeait correctement avec Xcode 6, mais l'erreur "binaire non optimisé pour iPhone5" était renvoyée avec Xcode 7. Après avoir essayé une multitude d'autres solutions, a réussi uniquement en supprimant toutes les références à une image de lancement (depuis que j'utilisais un fichier .xib universel) ET en définissant la cible de déploiement de 7.0 à 8.0 

0
rswayz

Vous pouvez maintenant ajouter directement les icônes d'application et créer des images splash dans les images.xcassets, Cliquez sur le bouton + pour ajouter le jeu d'images correspondant à iphone5 avec iOS 5,6,7, iphone4, iPad . pour définir le nom des images comme default.png, default @ 2x.png

0
Pravin

Soyez averti lorsque vous utilisez un référentiel images.xcassets, il ne vous permettra pas de localiser vos écrans de démarrage.

J'essaie actuellement d'obtenir une version française et anglaise de notre application.

WWW> Cette méthode "pliste" fonctionnera-t-elle si vous devez localiser vos écrans de démarrage? 

0
Timi