web-dev-qa-db-fra.com

Écran de lancement qui se comporte exactement comme Image de lancement

Pour que iPad Pro utilise la résolution maximale au lancement, nous devons utiliser un fichier d’écran de lancement .

Je n'avais jamais utilisé Launch Screen XIB/Storyboard auparavant, car mon application est rétro-compatible avec iOS 7. Normalement, j'utilise un Catalogue de ressources LaunchImage pour définir une image statique spécifique pour chaque dimension de périphérique et orientation de lancement.

J'essaie maintenant de définir un fichier d'écran de lancement qui se comporte comme un catalogue d'actifs LaunchImage, mais j'ai du mal à le faire. En particulier:

1) Je ne vois pas le meilleur moyen de sélectionner un UIImage différent en fonction de la taille exacte du périphérique, par exemple. montrer une image aux utilisateurs d'iPhone 4S et une autre image aux utilisateurs d'iPhone 5.

2) Je ne vois pas de moyen de sélectionner un autre UIImage pour iPad Portrait et Paysage iPad. Les classes de taille semblent penser que iPad Portrait et iPad Paysage ont une largeur et une hauteur «Normales». Par conséquent, tout UIImage qui apparaîtrait sur Portrait iPad apparaîtra également dans iPad Paysage.

25
Dan Fabulich

Le système charge le fichier de lancement avant de lancer l'application, ce qui crée certaines contraintes sur son contenu (certaines pouvant vous obliger à revenir à des fichiers image statiques):

1.L'application n'est pas encore chargée. Par conséquent, la hiérarchie des vues n'existe pas et le système ne peut appeler aucun code de configuration de contrôleur de vue personnalisé que vous pourriez avoir dans l'application (par exemple, viewDidLoad).

2.Vous ne pouvez utiliser que des classes UIKit standard, vous pouvez donc utiliser UIView ou UIViewController, mais pas une sous-classe personnalisée. Si vous essayez de définir une classe personnalisée, vous obtiendrez une erreur de configuration illégale dans Xcode.

3.Le fichier de lancement ne peut utiliser que les vues UIKit de base telles que UIImageView et UILabel. Vous ne pouvez pas utiliser UIWebView.

4.Si vous utilisez un storyboard, vous pouvez spécifier plusieurs contrôleurs de vue, mais il existe encore quelques limitations. Par exemple, vous pouvez incorporer des contrôleurs de vue dans un contrôleur de navigation ou de barre d'onglets, mais des classes de conteneur plus complexes telles que UISplitViewController ne fonctionnent pas (du moins pas encore).

5. La localisation du fichier de lancement ne semble actuellement avoir aucun effet. La localisation de base est toujours utilisée, vous voudrez donc probablement éviter le texte sur l'écran de lancement.

6.Vous ne pouvez pas spécifier différents fichiers de lancement pour iPad et iPhone. Cela peut poser problème si vous avez des interfaces très différentes pour ces périphériques, car vous ne pouvez en faire que beaucoup avec les classes de mise en page et de taille automatiques.

Notez que si vous déployez sur iOS 7, vous devrez toujours inclure les fichiers images de lancement statiques. Vous pouvez inclure un fichier image de lancement et des images de lancement statiques. Des appareils tels que l'iPhone 6 sous iOS 8 utiliseront le fichier d'image de lancement, tandis que les appareils iOS 7 se replieront sur les images de lancement.

4
Kusal Shrestha

Vous pouvez utiliser les classes de taille pour spécifier différentes images pour différentes tailles d'écran, mais cela ne vous aide pas à gérer les cas d'écrans d'iPhone 4S et iPhone 5. 

2
Vitaliy Gozhenko
  1. Commencez par créer toutes vos images. Ensuite, ouvrez votre catalogue d’actifs et cliquez avec le bouton droit de la souris sur -> Icônes de l’application et images de lancement -> Nouvelle image de lancement iOS. Cela créera un fichier dans lequel glisser tous vos fichiers. Fais ça. Nommez le bien "Lancer".  enter image description here

  2. Créez un nouveau story-board d’écran de lancement avec command-n. Choisissez iOS -> Interface utilisateur -> Écran de lancement. Appelez le fichier "Launch Screen".

  3. Dans votre scénariseur d’écran de lancement, sélectionnez la vue du contrôleur de vue. 

[selecting the view

  1. Recherchez l'espace réservé UIImageView dans la bibliothèque d'objets située dans le coin inférieur droit de la barre, puis faites-le glisser dans la vue de l'écran de lancement. 

 UIImageView

  1. Maintenant, sélectionnez la vue de l'image dans le storyboard, puis tapez le nom de l'image dans votre catalogue d'actifs. 

 enter image description here

  1. Contrôlez le glisser de UIImageView vers sa vue conteneur pour configurer les contraintes de présentation automatique comme suit: 

 enter image description here

  1. Facultatif ... si vous voulez que ça ait l'air bien dans votre storyboard, sélectionnez la vue et faites l'option-cmd- = pour mettre à jour le cadre de UIImageView. 

  2. Accédez à votre info.plist et tapez le nom de votre storyboard ("Écran de lancement ") Pour la touche "Nom de base du fichier d'interface de l'écran de lancement".

  3. Nettoyez et courez. 

J'espère que ça aide et que je n'ai rien oublié! 

2
olynoise

Ceci est une solution pour iPad qui peut fonctionner, 

pour iPhone, vous pouvez utiliser des classes de taille et je ne publie pas cette solution ici.

La solution consiste à diviser l’image d’écran d’accueil en composants et à utiliser des contraintes pour manipuler l’image Portrait/Paysage. 

Voici un exemple de la façon dont je l'ai fait.

Créer un storyboard de lancement pour iPad 

UILaunchStoryboardName ~ ipad (UILaunchStoryboardName ~ iphone)

Prenez votre image de paysage dans mon cas 2048x1536

J'ai pris l'image de paysage et l'ai coupée en trois 

  1. Centre 1536x1536 
  2. Gauche 256x1536 
  3. Droit 256x1536

Sur le storyboard de lancement, j'ai créé 3 vues d'image avec les contraintes suivantes.

Pièce centrale: 

  • Broche en haut et en bas, 
  • centre en superview,
  • maintenir les proportions

Pièce gauche et droite: 

  • 0 Trailing/Center to centre, 
  • Aligner le haut, 
  • Hauteur égale

Puis pour le mode de la vue pour la gauche et la droite je l'ai changé de remplissage d'aspect en bas à droite et en bas à gauche (le mieux pour moi)

Je sais que cela semble exagéré pour quelque chose qui devrait être simple. Mon objectif d'utiliser le storyboard de lancement par-dessus les images de lancement était de réduire la taille de l'application. J'avais besoin de moins d'images de lancement et je pourrais utiliser jpeg plutôt que png

0
Ryan Heitner