[Résolu] Icon et Launch dans Assets

busterTheobusterTheo Membre
octobre 2015 modifié dans Apple Developer Programs #1

Bonjour,


voici un super tuto pour les images des icons et launchs du dossier Images.xcassets de notre projet.


 


On peut donc les faire facilement à  partir de ce lien.


 


Mais c'est ensuite que ça se gâte.


 


Je fais un projet pour iPad en paysage uniquement et pour iOS 7.0 and later.


Quand je clique sur "iOS 7.0 and later.", j'entend tous les systèmes à  partir du  7.


 


Concernant les launch :


D'après Apple, il me faudrait :


1024 x 768


2048 x 1536


2732 x 2048


 


Or dans xCode,


j'ai bien 



1024 x 768


2048 x 1536


pour 1x et 2x, en iOs 7.0 and Later,


 


mais pour iOs 8.0, (en cochant iOs 8.0 and Later,) j'ai 2208 x 1242.


Et je ne le trouve pas sur la page Apple !!!


 


D'ailleurs, à  ce sujet, si on veut iOs 7 & later, faut-il mettre aussi iOs 8 & later ?


Parce que si on le met pas, on n'a pas la proposition retina alors que later marche aussi pour le 7... !!!


 


D'autre part, comment générer dans Xcode le bon affichage pour le fameux iPad Pro (2732 x 2048), et surtout comment pouvoir y mettre l'image ?


 


Voici ma copie d'écran :


 


 


launch.png


 


 


 


 


 


En résumé, trois question :


 


 


1- Si je ne met que OS 7.0 and later, on ne propose pas 2208 x 1242, qui est proposé si je met aussi iOs 8.0 and Later, alors que pour moi le choix du 7 and (surtout later) inclut donc le 2208 x 1242 C'est le later qui l'inclut - Non ? - Pffff


 


2- Comment générer dans Xcode le bon affichage pour le fameux iPad Pro (2732 x 2048), et surtout comment pouvoir y mettre l'image ?


 


3- Pourquoi sur la page Apple, il n'y pas 2208 x 1242, qui se trouve dans xCode ?


 


Merci d'avance.


 


 


 



 


 


Réponses

  • AliGatorAliGator Membre, Modérateur
    Attends y'en à  qui font encore leurs LaunchImage en PNG ? ça fait depuis quelques versions qu'on utilise un fichier Storyboard pour faire ça dans Xcode, et heureusement.


    Comme ça on design le LaunchScreen une seule fois (en plaçant les contraintes sur ce Storyboard comme il faut pour que ça se redimensionne correctement quelle que soit la taille de l'écran cible) et on indique à  Xcode d'utiliser ce Storyboard comme LaunchScreen dans les settings du target et c'est fini.


    Plus besoin de faire 36 variantes de PNG dans toutes les tailles possibles et imaginables !!
  • Heu, je comprend plus, moi je suis les tutos Apple.


     


    En plus, dans mon projet, au lancement de l'appli, j'ai déjà  un petit fondu sur une image plein écran que j'ai dans mon dossier ressources.


     


    Est-ce que c'est ça le launch ? Auquel cas, puis-je me passer de ce plan "LaunchImage en PNG" ou "qu'on utilise un fichier Storyboard" ? Et ça suffit, ou faut-il quand même implémenter un plan "LaunchImage en PNG" ou "qu'on utilise un fichier Storyboard" ?


     


    Moi, je n'ai à  priori pas besoin de tout ça. J'ai déjà  le principe dans mon appli...


     


    Merci


  • AliGatorAliGator Membre, Modérateur

    Heu, je comprend plus, moi je suis les tutos Apple.

    Moi aussi je suis la doc Apple ;)

    Au début de iOS il y avait des LaunchImages "Default.png" pour les écrans 320x640, puis il y a eu les LaunchImages "Default@2x.png" pour quand il y a eu les écrans Retina, puis il y a eu les écrans 4 pouces et du coup on a dû rajouter "Default-768h@2x.png"... mais ensuite ça s'est arrêté là . Quand Apple a réalisé qu'à  l'avenir ils allaient avoir bien plus de résolutions différentes pour les tailles d'écran et que c'était pas possible (du moins trop fastidieux) de demander aux devs de fournir 36 versions d'images pour tout couvrir, ils ont basculé à  la place vers la solution d'un LaunchScreen.storyboard comme décrit dans le lien fourni.

    Et du coup autant si tu veux supporter les anciens iOS et tailles d'écran tu peux encore fournir des fichiers Default.png/Default@2x.png/Default-768h@2x.png , mais pour toutes les autres tailles d'iPhone tu ne pourras pas fournir de PNG, ça se fait plus, c'est par un fichier Storyboard maintenant.

    Après rien ne t'empêche de créer ce fichier LaunchScreen.storyboard en n'y mettant rien qu'une UIImageView dedans dans laquelle tu mets ton image que tu as déjà  prévu comme écran de démarrage. Sauf qu'au moins tu peux mettre des contraintes dans IB sur ce Storyboard pour indiquer comment tu veux que ton image se resize pour qu'elle sache a'adapter à  n'importe quelle taille d'écran.

  •  


     


    Moi aussi je suis la doc Apple  ;)

    Ah ouais, y'a plusieurs docs. Non, je rigole.


     


    Bon je regarde tout ça demain. Ce soir, je ne me couche pas à  5h.


    Sans quoi, moi ce sera que pour ipad paysage iOs 7.0 et later.


     


     


    Dans mon projet, j'ai une image en fondu, au lancement de l'appli.


    Y'a un rapport ? Et si oui, je gère ça comment, je comprend pas à  quoi sert la launch (SB ou asset) d'Apple ?


     


    Moi, j'en n'ai rien à  foutre de leur histoire de launch, puisque j'ai un écran de lancement en fondu dans mon appli.


     


    T'as une précision là -dessus ?


     


    Merci d'avance.


    Excuse mon ton discordant.  8--)

  • CéroceCéroce Membre, Modérateur

    Pour résumer ce qu'a écrit AliGator:


    - avant on créait une image de démarrage pour chaque résolution/terminal/orientation. Crois-moi que c'est gavant.


    - aujourd'hui (iOS 8+), on crée un storyboard ou un xib, on place des images views qui vont bien, ont met des contraintes, et voilà . Il faut juste renseigner son nom dans le panneau General de la target.


  • AliGatorAliGator Membre, Modérateur
    Tu es obligé d'avoir un Launch, au même titre que tu es obligé d'avoir une AppIcon.

    Ca n'est pas la même chose que l'éventuel écran en fondu que tu as codé toi-même au démarrage. Le LaunchScreen il s'en fout ça, il intervient avant

    Le LaunchImage que tu fournis à  Apple (image fournie directement en PNG avec Default.png & co, ou image générée par iOS depuis le Storyboard que tu fournis qu'il aura juste rendu sous forme d'image après avoir adapté sa taille à  la taille de l'écran) en fait c'est pour que iOS affiche cette image pendant que le système charge ton application.
    C'est un peu comme sous OSX quand tu cliques dans le Dock sur une icône d'une application non encore lancée, l'icône de l'application rebondit dans le Dock pendant que le système ouvre/charge l'application en mémoire, pour te montrer qu'il est en train de la lancer, même si en général c'est assez rapide. Bah là  sous iOS c'est ce même genre de temps de chargement, sauf que c'est pas l'icône qui sautille dans le Dock, c'est la LaunchImage qui s'affiche à  l'écran pendant ce temps.

    Souvent ça ne dure que quelques dixièmes de secondes, mais il n'empêche, entre le moment où tu tapes sur l'icône de ton application et le moment où le premier ViewController de ton application s'affiche (que ce soit un vrai écran ou que ce soit un ViewController que tu as fait pour afficher une image qui va disparaitre en fondu, ou quoi), le système doit quand même charger ton application en mémoire (si elle n'était pas déjà  en RAM), faire le link dynamique des frameworks dont ton app à  besoin, et faire tout le process de démarrage de l'application ensuite (le UIApplicationMain dans le main.m). Et quand il a a fini tout ça, enlève cette LaunchImage de l'écran et il appelle la fameuse méthode "application:didFinishLaunchingWithOptions:" pour te dire que ça y est il a fini de charger et lancer l'application.

    Du coup entre le moment où l'utilisateur tap sur l'icône et le moment où tu reçois le "application:didFinishLaunchingWithOptions:", pour faire patienter l'utilisateur, il faut mieux afficher quelque chose plutôt qu'un écran noir. C'est à  ça que sert le LaunchScreen. Evidemment vu que c'est un écran le temps que l'app se charge, tu ne peux mettre aucun code dessus. In fine, ce n'est qu'une image affichée par le système avant même que ton app se soit lancée (donc effectivement forcément ton app peut encore moins exécuter du code).
  • Ah ok, merci à  vous pour ces explications.


     


    J'ai bien compris le truc, et j'ai réussi à  mettre en repérage l'image de launch (SB) et mon image de fondu.


    En trichant un peu : + 4px en x


     


    Je met résolu.


  • Il semble qu'on puisse aussi faire un LaunchScreen qui est un xib.


  • busterTheobusterTheo Membre
    octobre 2015 modifié #10

    xib ou dans le storyBoard en freeform, c'est pareil, non ?


  • CéroceCéroce Membre, Modérateur
    octobre 2015 modifié #11

    Il semble qu'on puisse aussi faire un LaunchScreen qui est un xib.

    Je confirme.
     

    xib ou dans le storyBoard en freeform, c'est pareil, non ?

    Un peu, oui, puisqu'il n'y a de toute façon qu'un écran dans les deux cas. J'utilisais plutôt un xib, parce que ça me paraà®t moins lourd, mais ce n'est pas une réalité mesurée et établie.
  • merci pour ces précisions.


Connectez-vous ou Inscrivez-vous pour répondre.