Asset Catalog : difference taille d'écran iphone

CoolsinusCoolsinus Membre
septembre 2013 modifié dans Xcode et Developer Tools #1

Bonjour,


 


J'ai fait la transition entre Xcode 4 et Xcode 5, et j'ai donc crée un Asset Catalog qui gère toutes mes images. 


Ma vue a une image de fond, donc dans mon Asset Catalog j'ai un Background qui contient trois images : normal, @2x, et R4.


Quand j'assigne le Background à  mon ImageView dans IB, l'image ne s'adapte pas en fonction de si mon ViewController fait 4" ou 3,5", si c'est en 4" l'image est étiré, si c'est en 3,5" eh bien comme c'est l'image pour iphone 3,5" alors tout va bien. 


Donc mon problème est pourquoi est ce que l'image ne s'adapte pas en fonction de la taille de l'écran ? 


Quand je compile avec l'iOS Simulator 4" ça s'affiche comme dans IB, donc une image 3,5" étiré ? 


 


Comment ça se fait ? Et me dites pas que y'a la NDA ! :D


 


Merci d'avance :)


Réponses

  • CéroceCéroce Membre, Modérateur

    UIImageView affiche des UIImages.


    Les images sont disposées à  l'intérieur des UIImageView en fonction de la propriété contentMode.


     


    UIImage possède une méthode -resizableImageWithCapInsets: (et cie) pour créer des images étirables.


    Ce qu'apportent les Assets Catalog de Xcode 5, c'est la possibilité de définir quelles parties de l'image sont étirables graphiquement depuis Xcode plutôt que dans le code.


  • CoolsinusCoolsinus Membre
    septembre 2013 modifié #3

    D'accord mais ça c'est pratique pour des boutons par exemple. Mais moi j'ai un background que j'ai entré dans deux tailles différentes : 3,5" et 4". Ce que je veux c'est que quand c'est un iphone 4, ca affiche l'image 3,5", quand c'est un iphone 5, ca affiche l'image 4". Je ne veux pas que ça me l'étire ou quoi que ce soit, je veux simplement qu'en fonction de la taille de l'écran de l'iphone ça choisisse soit myBackGroundFor3,5Inch soir myBackground4Inch, où myBackground3,5Inch = 640 x 960 et myBackGround4Inch = 640 x 1136.


     


    Comment fait-on ? 


  • CéroceCéroce Membre, Modérateur

    Deux solutions:


    1) imaginons que l'image est juste le titre de l'appli centré, alors une solution simple est de ne garder que l'image la plus haute et changer le contentMode de l'image view en "center". L'image sera alors tronquée en haut et en bas.


     


    2) par le code, voir quelle est la hauteur de la vue et changer l'image.


     


    Les deux méthodes sont très moyenne d'un point de vue de l'évolution de l'appli. Y'en a encore qui cherchent comment adapter leur appli à  l'iPhone 5.


     


    Dans tous les cas, il faut arrêter de composer les écrans en pensant que ce sont comme des pages de magazines, de taille fixe.  


  • CoolsinusCoolsinus Membre
    septembre 2013 modifié #5

    Oui mais moi mon image a pleins de choses importantes et tout doit être affiché, c'est pas une simple texture qu'on peut tronquer etc. Et justement, quel est l'intérêt qu'Assez Catalog te demande ton image R4 si c'est pour devoir tester la taille de l'écran ?


  • CéroceCéroce Membre, Modérateur

    Le seul cas où l'image R4 est utilisée, c'est pour l'écran de démarrage (default.png).


  • CéroceCéroce Membre, Modérateur


    Oui mais moi mon image a pleins de choses importantes et tout doit être affiché, c'est pas une simple texture qu'on peut tronquer etc. 




    Utilise plusieurs images views dans ce cas.

  • Ouai mais il doit bien y avoir une manière de faire ca avec Interface Builder ca me parait tellement basique..


  • J'ai trouvé la solution : pour que l'image R4 s'affiche automatiquement lorsque c'est un écran 4" il faut que le iOS Target soit iOS 7. Donc pour ceux comme moi qui ont passé leur projet iOS 6 de Xcode 4 à  Xcode 5 eh bien il faut changer le iOS Target à  iOS 7, sinon bah l'image R4 ne s'affichera pas..


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