Debug iPhone5, release iP5 & iP4<

::

Bonjour,



Je travaille actuellement en debug (en dev) sur un iPhone5, je base donc mon intégration graphique sur la taille écran de l'iphone5.



Mais ceci dit, je voudrai savoir quelles sont les bonnes pratiques pour adapter une intégration à  la fois sur iP5 et iP4<.



Je cherche mais je ne trouve pas de réel concordances..







Cordialement,

Simon!

Réponses

  • ça dépend des vues.. Pour la plupart des applications il n'y a pas grand chose à  faire. Mais dès qu'on commence à  afficher des choses un peu plus complexes qu'une simple liste de données, dans ce cas il faut réfléchir à  ce qui est le mieux pour l'utilisateur...

    Un exemple tout bête avec l'application Music d'Apple. Dans la vue player ils ont décidé de laisser la barre de temps visible sur iPhone 5, tandis qu'il faudra effectuer un tap sur l'iPhone 4 afin de l'afficher ou la masquer (elle va se superposer à  la cover alors qu'elle prend vraiment un espace dédiée sur l'iPhone 5).

    Concernant le fait de savoir si on se trouve sur un iPhone 5 ou non, il semblerait que la seule solution soit de vérifier la taille de l'écran
    <br />
    [color=#6B6EC7][font=monospace][size=3][font=Menlo][size=2][b][color=#880000]#define[/color][color=#000000] [/color][color=#660066]DeviceIsPhone568[/color][color=#660066]H[/color][color=#000000]                   [/color][color=#666600]([[[/color][color=#660066]UIDevice[/color][color=#000000] currentDevice[/color][color=#666600]][/color][color=#000000] userInterfaceIdiom[/color][color=#666600]][/color][color=#000000] [/color][color=#666600]==[/color][color=#000000] [/color][color=#660066]UIUserInterfaceIdiomPhone[/color][color=#000000] [/color][color=#666600]\[/color][/b][/size][/font][/size][/font][/color]<br />
    [color=#6B6EC7][font=monospace][size=3][font=Menlo][size=2][b][color=#000000]                                            [/color][color=#666600]&amp;&amp;[/color][color=#000000] [/color][color=#660066]CGRectGetHeight[/color][color=#666600]([[[/color][color=#660066]UIScreen[/color][color=#000000] mainScreen[/color][color=#666600]][/color][color=#000000] bounds[/color][color=#666600]])[/color][color=#000000] =[/color][color=#666600]=[/color][color=#000000] [/color][/b][color=#D83F82][b][color=#006666]568.[/color][/b][/color][b][color=#666600])[/color][/b][/size][/font][/size][/font][/color]<br />
    
  • ::



    Yoyo,



    on ne peu utiliser
    <br />
    [UIDevice currentDevice] systemVersion]<br />
    




    ?



    A++
  • Bonjour,



    /size][/font][/color][color=#660066][font=monospace][size=3]UIDevice[/size][/font][/color][color=#000000][font=monospace][size=3] currentDevice[/size][/font][/color][color=#666600][font=monospace][size=3 systemVersion].

    renvoie la version du système installé sur le device, donc tu ne pourra pas trop savoir si c'est un iPhone 5 ou 4, puisque on peux installer toutes les version sur le deux systèmes.
  • AliGatorAliGator Membre, Modérateur
    'Freyskeyd' a écrit:
    :: Yoyo, on ne peu utiliser
    [UIDevice currentDevice] systemVersion]
    
    ? A++
    Non ça c'est la version du système, pas la version du hardware (de l'OS).



    Et de toute façon ça serait une très mauvaise pratique (c'est ce genre de mauvaise pratique qui a fait démarrer la guerre dans le monde Web/HTML, où chacun testait quel était le browser au lieu de tester la capacité qui l'intéressait... du coup quand les versions évoluaient ça devenait le bordel d'incompatibilités).



    Il faut toujours tester ce qui nous intéresse, et pas une propriété dont on pense être la cause de ce qui nous intéresse. Si tu veux savoir si un objet roule, tu testes pas si c'est une voiture ou un camion. Car tu vas oublier de tester le cas des vélos, et puis quand tu as fait ton test le Segway n'existait pas mais maintenant qu'il existe c'est con de pas l'inclure...



    Là  c'est pareil, en vérité on ne cherche pas à  savoir si on est sur un iPhone 5 ou un iPhone 3GS/4/4S. On cherche à  savoir quelle est la taille de l'écran. C'est ça la vraie info qui nous intéresse. Donc [UIScreen mainScreen].bounds.size.



    Et encore, pour être même plus précis, ce qui nous intéresse en général c'est la taille de l'espace disponible dans lequel on peut dessiner notre design, faire tenir notre application. Cet espace dépend de la taille de l'écran de l'iPhone, mais aussi de plusieurs choses, dont le fait que la status bar soit visible ou non, si elle est visible ça dépend si on a un appel en cours (ou une navigation dans Plans, ou un enregistrement audio en cours, ou un partage de connexion) où dans ce cas la statusBar est plus grande que les 20pt habituels, ça dépend de l'orientation du device (car dans ce cas la statusBar n'est pas sur le même bord, etc...

    Donc la vraie valeur à  tester c'est pas les bounds du UIScreen mais son applicationFrame, propriété qui sert typiquement à  ça.



    Je vous renvoie à  la session des CocoaHeads de Rennes récente où iSofTom explique tout cela en détail.



    En tout cas beaucoup de gens ne pensent malheureusement pas à  tester leurs softs dans toutes les configurations possibles de taille d'écran. Il est loin de n'y avoir que 2 cas (iPhone à  écran 3.5" et iPhone 5 avec son écran 4"), il y en a autant que d'orientations * nombre de cas de statusBar (pas de SB, SB taille classique, SB grande taille) au moins, et ça c'est que pour quand on est intéressé par la taille totale de l'espace dispo à  toute l'appli. Il y a bien des cas où on peut même aller plus loin et où ce qui nous intéresse c'est la taille de la vue du UIViewController courant, en prenant en compte (en plus de tous les cas précédemment cités) la possibilités d'une UINavigationBar, UITabBar... le fait que ce UIViewController pourra un jour être pourquoi pas utilisé dans un PopOver sur la version iPad de l'appli si un jour vous la portez dessus, ou pourra être utilisé comme ChildViewController autre part...



    Cessez de tester si vous êtes sur iPhone 5 ou pas. Testez la taille de l'écran, ou même la taille de la vue qui vous intéresse directement.
  • Tiens d'ailleurs c'est quoi cette manie de commencer tes messages par "::" mister Freyskeyd?
  • CéroceCéroce Membre, Modérateur
    ça doit être un programmeur habitué au C++.

    #HumourDeComputerGeek
  • 'Céroce' a écrit:


    ça doit être un programmeur habitué au C++.

    #HumourDeComputerGeek


    J'ai pas osé la faire... image/clap.gif' class='bbc_emoticon' alt=' :D ' />
  • FreyskeydFreyskeyd Membre
    novembre 2012 modifié #9
    ::



    c'est du à  une déformation de convention de nommage dans une entreprise image/smile.png' class='bbc_emoticon' alt=':)' />



    Et je trouve ça plus clair image/tongue.png' class='bbc_emoticon' alt=':P' />



    Edit: Merci pour l'explication AliGator, je suis aussi de l'avis que l'ont doit tester ce dont on a besoin à  l'instant T.
  • ::



    Bonjour,



    je reviens vers vous car je commence déjà  à  avoir des petits problèmes de compatibilité entre les 3,5 et les 4"... notamement avec les tableView.



    J'aimerai avoir votre avis sur une best practice à  mettre en place pour que mes vues soit correcte en fonction du device.



    Dois-je réaliser deux storyboards?

    Dois-je modéliser un storyboard uniquement en 3,5"?



    Je ne sais vraiement pas par où le prendre.



    Je ne peux pas non plus utiliser le auto layout car cela n'est pas compatible avec certaines de mes vues...



    A++ et merci!
  • AliGatorAliGator Membre, Modérateur
    Une seule vue et utilisation autoresizingMask (qui existent depuis une éternité bien avant AutoLayout et sont suffisant dans 90% des cas)
  • ::



    D'accord mais la actuellement j'ai un probleme avec une vue.



    J'ai une vue qui contient un UIScrollView, qui prend 90%, et un Page control en bas.

    Quand j'appel une autre vue (à  100%) dans ce UIScrollView le haut est masqué.

    Donc soit je m'y prend mal dans la création des vues appellé soit je ne sais pas :s



    Pour l'autoresizingMask, je dois positionné les curseurs de contraintes comment?

    Toujours callé en haut? au milieu? au centre? à  gauche?



    merci encore Ali image/wink.png' class='bbc_emoticon' alt=';)' />
  • AliGatorAliGator Membre, Modérateur
    Je t'avoue que j'ai du mal à  comprendre ton truc, ça veut dire quoi "quand j'appelle une autre vue dans ce UIScrollView" ?

    Pour les curseurs de contraintes de l'ARM ça dépend de ce que tu veux comme comportement...

    T'as pas un petit dessin pour expliquer exactement ta hiérarchie de vue ?
  • ::



    Ok, après plusieurs essai j'ai compris comment faire.



    Mon nouveau problème est la compatibilité IOS5.1, le simulateur n'exécute pas mes IBAction...
Connectez-vous ou Inscrivez-vous pour répondre.