web-dev-qa-db-fra.com

Comment ajouter une image de lancement iPhoneX

À l’aide de Xcode version 9.0 (9A235), j’essaie d’ajouter une image de lancement pour iPhoneX au format demandé de 2436px × 1125px (paysage). Actuellement, j'utilise un Storyboard et cela ressemble à ceci:

 enter image description here

'launchimage' est une vue d'image liée à un ensemble d'images:

 enter image description here

Et l'ensemble d'images est comme suit:

 enter image description here

Le seul endroit où je reçois une image de la taille d'un iPhoneX est un ensemble d'images de lancement:

 enter image description here

Mais lorsque j'essaie de sélectionner une image de lancement dans la vue d'image du scénarimage, elle ne peut pas être sélectionnée:

 enter image description here

Avez-vous de l’aide pour ajouter une image de lancement de taille correcte pour iPhoneX ou revenez-vous à Lancer images? Je préférerais l'image de taille correcte, pas une image étirée.

METTRE À JOUR:

Je voudrais expliquer pourquoi je veux que l'image soit exactement le même pixel par pixel. Suivre les instructions dans https://developer.Apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/ mon image de lancement est une version statique de la première page de l'application. . Si l'image de lancement est étirée, il est possible de passer de l'image de lancement à la première page. Quel genre de défaites l'objet des lignes directrices. Apple recommande d'utiliser un lancement de storyboard, mais il semble que vous ne puissiez pas suivre leurs instructions si vous le faites. Typique, vraiment.

23
Christian Cerri

En utilisant Xcode version 9.1 (9B55), grâce aux réponses ci-dessus (en particulier à Stoull), mon expérience est toutefois légèrement différente. Ma question initiale était fondamentalement la suivante: "Comment obtenir une image de lancement (dans le storyboard ou dans LaunchImage) qui correspond au bg de la première scène de jeu sans un coup de mise à l'échelle sur toutes les résolutions?"

J'ai résolu ce problème et cela fonctionne avec LaunchImage. Cependant, il y a des complications.

Ajoutez une LaunchImage au dossier Assets, puis spécifiez-la dans les paramètres du projet:

 enter image description here

Alors vous vous attendez à faire ceci:

 enter image description here

résultant en:

 enter image description here

MAIS sur Build, vous obtenez l'avertissement:

 enter image description here

vous en avez donc besoin pour la LaunchImage:

 enter image description here

résultant en:

 enter image description here

et il n'y a pas d'avertissement .... et LaunchImage fonctionne sur tous les iPhones/iPads.

Les tailles d'image sont:

iPhoneX (iPhone X Paysage iOS 11+): 2436 x 1125

Retina HD 5.5 "(Paysage iPhone iOS 8,9): 2208 x 1242

2x (iPhone Portrait iOS 7-9): 640 x 960

Retina4 (iPhone Portrait iOS 7-9): 640 x 1136

1x (iPad Paysage iOS 7-9): 1024 x 768

2x (paysage iPad iOS 7-9): 2048 x 1536

Le système est clairement en désordre et nécessite une refonte adéquate par Apple.

2
Christian Cerri

Si vous avez utilisé le LaunchImage.launchimage pour le lancement, la solution est (dans Xcdoe 9.0):

  1. Sélectionnez Assets.xcassets, faites un clic droit sur le volet du milieu, sélectionnez App Icons & launch Images -> New iOS Launch Image. Puis déplacez les anciennes images LaunchImage.launchimage vers les nouvelles et ajoutez la taille d’image avec 1125×2436 px pour iPhoneX .  enter image description here  enter image description here

  2. En outre, vous pouvez ajouter l'objet json suivant au fichier Contents.json qui, dans le dossier LaunchImage.launchimage de votre ancien projet。Once Xcode est actualisé, il suffit d'ajouter une image 1125 × 2436px. Si vous avez besoin de paysage, vous pouvez en ajouter un autre avec l’orientation.

	{
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "2436h",
      "minimum-system-version" : "11.0",
      "orientation" : "portrait",
      "scale" : "3x"
    }

39
Stoull

Pour les développeurs paresseux comme moi qui ont un projet existant et une ancienne version de launchimage (sans variante iPhoneX), voici ma solution pour prendre en charge iPhone X - il s'agit d'un raccourci pour vous.

  1. Ouvrez Assets.xcassets dans votre Xcode.
  2. Faites un clic droit dans votre LanchImage puis sélectionnez Afficher dans le Finder .
  3. Ouvrez le Contents.json
  4. Collez les codes suivants dans votre "images" array.
 {
  "extent" : "full-screen",
  "idiom" : "iphone",
  "subtype" : "2436h",
  "filename" : "ipxportrait.png",
  "minimum-system-version" : "11.0",
  "orientation" : "portrait",
  "scale" : "3x"
},
{
  "extent" : "full-screen",
  "idiom" : "iphone",
  "subtype" : "2436h",
  "filename" : "ipxlandscape.png",
  "minimum-system-version" : "11.0",
  "orientation" : "landscape",
  "scale" : "3x"
},

Remplacez bien sûr le nom de fichier par les images appropriées. Voila!

18
Glenn

Si j'ai bien compris, vous utilisez un story-board comme écran de lancement avec affichage de l'image, n'est-ce pas?

Si tel est le cas, dans votre scénario de lancement, sélectionnez pour afficher comme iPhone X:

 enter image description here

Ajoutez ensuite la vue de votre image pour qu'elle remplisse toute la zone de la manière suivante:

 enter image description here

et épinglez-la au superview avec des constantes de 0. Il est important de le faire avec l'iPhone X sélectionné, car sinon vous épingleriez probablement dans Top Layout Guide, que vous ne voulez pas, Haut.

Votre constellation devrait ressembler à ceci (épinglé à Superview):

 enter image description here

14
jonaszmclaren

En orientation portrait, la largeur de l'affichage sur l'iPhone X correspond à la largeur des écrans 4.7 "de l'iPhone 6, iPhone 7 et iPhone 8 . L'écran de l'iPhone X est toutefois 145 pt plus grand qu'un écran de 4.7", résultant en environ 20% d'espace vertical supplémentaire pour le contenu.

 enter image description here

Votre image est probablement correcte, mais essayez de nettoyer (cmd + K) et de reconstruire le projet.

Si le problème persiste, supprimez cette image de Xcode et rajoutez-la à nouveau en faisant glisser ces images dans Xcode. Et reconstruisez-le. Ça devrait marcher.

2
Vlad Khambir

Vous pouvez conserver une image plus grande en tant qu'image 3x dans votre ensemble d'images! Je veux dire que 1125px × 2436px est 3x résolution de 375pt × 812pt.

ainsi, dans votre jeu d’images, remplacez l’ancienne image 3x par l’image de taille 1125px × 2436px et votre écran de lancement (storyboard ou xib) ne s’étirera pas, je pense!

1
Lion

J'ai supprimé la vue image de xib et nettoyé les données dérivées et la construction . Encore une fois, j'ai ajouté une vue image simple et ensuite défini l'image après avoir défini les contraintes (début, fin, haut, bas) pour superview. Cela a bien fonctionné.

0
Krutika Sonawala

MODIFIER:
Je voulais souligner qu’il était possible d’ajouter une image de lancement pour iPhone X, mais @Christian Cerri demandait d’ajouter une image NORMAL à la Vue d’image dans LaunchScreen.storyboard spécifiquement pour iPhone X, ce qui est impossible.

Réponse originale:
Il n’est pas possible d’ajouter une image spécifique pour iPhone X au catalogue d’actifs (car il utilise @ 3x), vous devez donc probablement utiliser les images de lancement pour cela, si vous voulez une autre image destinée uniquement à iPhone X..

0
jonaszmclaren