Deformation des éléments avec une Launch Image

Bonjour à  tous, 


 


Dans une application, que j 'ai bien avancé, je décide de mettre une launch image, donc pour cela, comme d'hab, j'utilise un nouveau catalogue de launch image,  je met mes launch image dans les cases correspondantes... 


 


Je lance mon application, le launch image s'affiche normalement, mais le reste de l'application est totalement déformer (screenshots).


 


J'utilise le storyboard, peut-être que ça vient de là  ?


J'utilise Xcode 7.1


 


Peut-être que je m'y prend mal pour les launch images...


 


Un problème tout bête, mais qui fait tâche.


 


J'espère que vous aurez des solutions !


Merci de m'avoir lu et à  bientôt !! ;)


 


 


Mots clés:

Réponses

  • Je ne pense pas qu'il y ait un lien avec les launch images.


     


    On dirait plutôt que l'image est déformée dans une UIView, il faut régler le mode à  Aspect Fit ou Aspect Fill.


  • Oui, mais quand je n'utilise pas de catalogue de launch image, tout va bien, et dès que j'en utilise un, le reste de l'application se déforme. Si j'enlève ce catalogue, l'application redevient normale.


  • AliGatorAliGator Membre, Modérateur
    Si tu cibles une version d'iOS récente, il faut que tu fournisses un Storyboard de lancement. Si tu ne fournis qu'une LaunchImage PNG et pas de LaunchScreen.storyboard, alors iOS considèrera que ton application n'a pas été pensée pour les écrans 4.7" et 5.5" ou n'a pas encore été adaptée pour ces résolutions, et du coup préfèrera étirer l'application en largeur et hauteur (effet zoom) plutôt que de d'appliquer les contraintes AutoLayout pour profiter au max de la taille. C'est fait pour, en particulier cela permet la rétrocompatibilité de ton application si tu ne l'as développée que pour les anciens devices à  l'époque.

    Normalement Xcode doit te mettre un warning jaune pour t'expliquer ça quand tu compiles, d'ailleurs.

    En gros :
    • Au début il y avait juste les écrans 3.5", donc on avait juste une LaunchImage.png
    • Puis il y a eu Retina, on a rajouté LaunchImage@2x.png
    • Quand sont arrivés les écrans 4" Retina, on a eu LaunchImage-568h@2x.png
    • Quand on a eu les écrans 4.7" et 5.5", Apple a dit stop, on ne va pas multiplier les LaunchImage.png pour toutes les résolutions ça devient n'importe quoi, donc maintenant faites un storyboard, comme ça vous pourrez appliquer des contraintes AutoLayout dessus et lui dire comment il doit être ajusté quel que soit la taille
    • Du coup ceux qui avaient déjà  publié des applications avant que les écrans 4.7" et 5.5" ne sortent, et n'avaient donc en général pas mis en place AutoLayout sur ces apps publiées car il n'y avait à  l'époque que 2 tailles d'écran (3.5 ou 4") et que AutoResizingMask pour les écrans et 2 PNGs pour les LaunchScreens ça suffisait, comment devaient-elles se comporter sur ces nouveaux écrans (du moins avant que leurs auteurs ne publier une mise à  jour sur l'AppStore pour les gérer) ? Le choix d'Apple a été de dire que si une application n'a pas de LaunchScreen.storyboard c'est sans doute qu'elle a été codée et publiée avant leur existence, et avant l'arrivée des écrans 4.7" et 5.5", et donc qu'il y a de fortes chances qu'elle ne sache pas comment se redimensionner correctement " façon AutoLayout " car n'a pas été prévue pour à  l'époque.
    • C'est pour ça que si tu n'as pas de LaunchScreen.storyboard mais QUE un LaunchScreen PNG, iOS considère que tu ne sais pas gérer le redimentionnement de ton applis pour toutes les tailles d'écran, et préfère alors juste étirer (zoom) le rendu de l'écran pour qu'il soit dessiné comme dans un écran 4" puis étiré pour prendre toute la place de l'écran 4.7 ou 5.5"
    Au final, si tu ne cibles que les iOS récents (ceux qui sachent gérer les LaunchScreen.storyboard), tu n'as plus besoin de LaunchImage PNG, tu peux te contenter d'un LaunchScreen.storyboard. Si tu cibles à  la fois les iOS récents (qui savent interpréter les LaunchScreen.storyboard) et anciens (qui ne feront rien de ce LaunchScreen.storyboard car ne connaissaient pas ce fonctionnement à  l'époque et se basaient uniquement sur les LaunchImages PNG), alors il te faudra aussi un LaunchImage PNG en + du storyboard pour supporter à  la fois anciennes version d'iOS et nouvelles.

    Mais tout ça, Xcode te le dit dans des warnigns jaunes de toute façon. Si tu n'as pas de LaunchImage PNG mais que Xcode ne te dit rien c'est que tu n'en n'as pas besoin car ton Deployment Target est assez haut pour cibler les iOS supportant les LaunchScreen.storyboard. S'il te faut une LaunchImage PNG parce que ton Deployment Target cible un iOS trop ancien, Xcode te dira qu'il faut que tu en rajoutes un.
  • Super merci beaucoup pour cette très bonne explication ! 




  • Super merci beaucoup pour cette très bonne explication ! 




    y'a plus qu'a marquer le sujet comme résolut Procuste34

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