Ecran Retina ou non

Bonjour,


 


Voilà , ça fait un petit moment que je développe mon appli et, ayant un iPhone 4 et 5, j'ai entièrement créer les images pour les écrans rétina (image@2x.png). Cependant, je n'ai pas pensé que l'iPhone 3gs était encore de la partie. 


Du coup, je ne sais pas comment m'y prendre car je suppose que je ne peut pas soumettre mon appli seulement pour les iphones 4,5,5c,...,non? Dois-je recréer toutes les images avec une résolution inférieur ou y a t il une astuce (par exemple CGAffinetransformescale(0.5,0.5);)


 


Merci.


Ps:c'est ma première appli que je compte soumettre à  apple.

 


Réponses

  • CéroceCéroce Membre, Modérateur
    mars 2014 modifié #2
    Le système de coordonnées n'a pas changé au passage aux écran Retina.
    Oui, il faut avoir deux versions des images: image.png et image@2x.png.

    Si tu utilises une UIImageView dans certains modes (par ex. Size to fit), évidemment ce sera réduit. Tu n'as qu'à  tester sur le simu pour vérifier.
  • Pour info, iOS 7 ne tourne que sur les devices Retina.
  • dédodédo Membre

    Oui mais du coup la taille de l'appli explose (faire deux fois la meme image), non?



    Oui pour l'ios7, à  la base mon appli est prévue pour l'ios 6 et plus. Mais j'ai cru voir un graphe montrant que 80% des utilisateurs environ étaient passés à  l'ios 7. Du coup j'hésite à  la mettre seulement pour ios 7 et plus.


  • CéroceCéroce Membre, Modérateur

    Oui mais du coup la taille de l'appli explose (faire deux fois la meme image), non?

    ça dépend des images et de leur nombre, mais ça fait un quart de mémoire en plus pour les images, grosso modo.
  • dédodédo Membre

    Exact! Dans ma tête, c'était la moitié en plus ..

    Autant pour moi, je vais faire ça alors.


    Merci!


  • dédodédo Membre

    Au final, pour ceux qui peuvent se retrouver dans le même cas que moi, j'ai utilisé :

     


    #define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))


    .


    .

    .

    UIImageView* crazyDogImage;

    if (IS_RETINA)

    {

         crazyDogImage = UIImageView alloc]initWithImage:[UIImage imageNamed:@"MyDog";

    }

    else

    {


        UIImage* WAF = [UIImage imageNamed:@MyDog];


         crazyDogImage = [[UIImageView alloc]initWithImage:[UIImage imageWithCGImage:[WAF CGImage] scale:2 orientation:(WAF.imageOrientation)]];

    }



    Du coup, je crée une image pour l'écran retina mais pas pour les non-retina.


  • CéroceCéroce Membre, Modérateur
    OK, mais ça sert à  quoi ?
    Je veux dire, certes on conserve en mémoire une image deux fois plus petite, mais ce qui compte en premier lieu, c'est l'affichage. Or, le rendu de l'UIImageView est stocké dans sa CALayer la première fois qu'elle est affichée.
  • DrakenDraken Membre
    mars 2014 modifié #9


    Oui pour l'ios7, à  la base mon appli est prévue pour l'ios 6 et plus. Mais j'ai cru voir un graphe montrant que 80% des utilisateurs environ étaient passés à  l'ios 7. Du coup j'hésite à  la mettre seulement pour ios 7 et plus.



    Les chiffres actuels sont 85% pour iOS 7, 12% pour iOS 6 et 3% pour les iOS précédents. Et ça évolue tous les jours vers davantage d'iOS 7 (+5% en 2 mois) ! Jusqu'à  ce qu'iOS 8 arrive .. qui ne sera PAS compatible avec l'iPhone 4, lui ..
Connectez-vous ou Inscrivez-vous pour répondre.