AutoLayout, oui ou non

Bonjour, 


 


J'ai une application composée de quelques fenetres. Cette application est utilisable qu'on mode portrait.


J'ai commencé à  la développer sans l'utilisation de l'autolayout. Plusieurs personnes m'ont déconseillé de faire ça, et m'on plus tôt encouragé à  l'utiliser.


 


Ce qu'il faut peut être mentionner, c'est qu'on mon appli est compatible iPad aussi, mais en portrait seulement.


 


Dois-je utiliser l'AutoLayout, ou bien faire les fenêtres à  l'ancienne ?


 


Merci et Bonne soirée.


Mots clés:
«1

Réponses

  • CéroceCéroce Membre, Modérateur

    Pour une application iPhone et iPad, effectivement, je dirais plutôt Autolayout qu'Autoresizing.


    En effet, tu disposes de davantage de contrôle et tu peux obtenir des mises en pages plus complexes sur iPad, tout en définissant des tailles minimales sur iPhone.




  • Pour une application iPhone et iPad, effectivement, je dirais plutôt Autolayout qu'Autoresizing.


    En effet, tu disposes de davantage de contrôle et tu peux obtenir des mises en pages plus complexes sur iPad, tout en définissant des tailles minimales sur iPhone.




    Merci Céroce pour ta réponse.


    Franchement, moi je croyais que l'intérêt de l'Autolayout est lorsqu'on souhaite que  l'application soit utilisable en mode portrait et landscape (les deux) c'est pour ça que je dis est il recommandé d'utiliser l' AutoLayout seulement en mode portrait.


     


    Merci

  • CéroceCéroce Membre, Modérateur
    Non, les deux systèmes, Autolayout et Autoresizing servent à  définir comment des vues filles sont agencées lorsqu'une vue parente est redimensionnée. Il se trouve qu'une rotation du terminal provoque une redimensionnement de la UIWindow (qui contient des vues), puisque sa largeur devient sa hauteur et vice-versa.

    L'Autoresizing est le système historique: facile à  comprendre, mais limité. L'Autolayout est un système alternatif, plus difficile à  mettre en oe“uvre, mais qui offre d'avantage de contrôle.


  • L'Autolayout est un système alternatif, plus difficile à  mettre en oe“uvre, mais qui offre d'avantage de contrôle.




     


    Je confirme, franchement pas évident à  comprendre au premier abord. D'ailleurs j'ai pas encore tout pigé.  :/



  • Je confirme, franchement pas évident à  comprendre au premier abord. D'ailleurs j'ai pas encore tout pigé.  :/




    Bonjour, 


    Et pourquoi pas, pendant quand y est, on se partage des docs, tutos, bien claires pour expliquer ce méchanisme ?


     


    Merci.

  • CéroceCéroce Membre, Modérateur

    Parce que le sujet est compliqué, donc ce n'est pas un simple tuto qui fera l'affaire, mais un livre entier:


    iOS Auto Layout Demystified


     


    Sinon, il y a la doc d'Apple qui est plutôt abordable, mais limitée. Jeter un oe“il aux vidéos de la WWDC est vivement conseillé, si on comprend l'anglais.


  • BooleanneBooleanne Membre
    février 2014 modifié #8


    Bonjour, 


    Et pourquoi pas, pendant quand y est, on se partage des docs, tutos, bien claires pour expliquer ce méchanisme ?


     


    Merci.




     


    Céroce, tu m'as grillée d'une minute !


  • muqaddarmuqaddar Administrateur
    février 2014 modifié #9


    Parce que le sujet est compliqué, donc ce n'est pas un simple tuto qui fera l'affaire, mais un livre entier:


    iOS Auto Layout Demystified




     


    Tu l'as acheté ce livre ?


     


    Il y a quelques tutos chez RayWenderlich aussi.


  • CéroceCéroce Membre, Modérateur


    Tu l'as acheté ce livre ?




    Non, mais j'ai acheté un autre livre d'Erica Sadun, écrit avec beaucoup de sérieux.

  • muqaddarmuqaddar Administrateur


    Non, mais j'ai acheté un autre livre d'Erica Sadun, écrit avec beaucoup de sérieux.




     


    J'en ai un d'elle également (iOS 3 je pense...).

  • Merci Céroce pour ta réponse.

    Franchement, moi je croyais que l'intérêt de l'Autolayout est lorsqu'on souhaite que  l'application soit utilisable en mode portrait et landscape (les deux) c'est pour ça que je dis est il recommandé d'utiliser l' AutoLayout seulement en mode portrait.

     




    En fait aucun des deux systemes n'est bien adapté au changement portait/landascape.

    Si on considère que ce passage est juste changement de hauteur/largeur alors autolayout peut le prendre en charge, c'est généralement le cas sur iPhone. Mais si on veut changer la disposition, ça devient un peu plus compliqué et il faut adjoindre du code pour modifier les contraintes en live lors de la rotation.

    Il pourrait y avoir un moyen de définir deux jeux de contraintes dans le xib.


    Le principe d'autolayout est très bon mais Xcode n'arrive pas à  cacher la complexité du système. Je pense que cela aurait mérité une refonte complete du format xib.

    Depuis qu'autolayout existe, je me suis vu plusieurs fois aller éditer le xib manuellement car l'éditeur n'est pas assez souple.


    Je pense qu'Apple devrait prendre exemple sur l'éditeur de XAML de Visual Studio qui permet une edition en texte du fichier XAML avec aperçu du résultat en live.
  • AliGatorAliGator Membre, Modérateur

    Le principe d'autolayout est très bon mais Xcode n'arrive pas à  cacher la complexité du système. Je pense que cela aurait mérité une refonte complete du format xib.

    Depuis qu'autolayout existe, je me suis vu plusieurs fois aller éditer le xib manuellement car l'éditeur n'est pas assez souple.

    ??? Je ne sais pas ce que vous avez avec AutoLayout mais moi depuis Xcode5 je le trouve au contraire plutôt bien fait et n'ai jamais eu à  éditer des choses à  la main ou quoi. Certes il pourrait y avoir encore quelques améliorations, mais Xcode propose différentes façons de rajouter des contraintes qui sont toutes assez claires et cachent bien la complexité du problème en rendant tout ça accessible et simple à  manipuler (pas comme Xcode4 !)
  • LeChatNoirLeChatNoir Membre, Modérateur

    En tous cas, vu les rumeurs sur les futurs devices, on a plutot intérêt de s'y mettre.


     


    Sinon, va falloir faire des tests dans tous les sens..


  • muqaddarmuqaddar Administrateur


    En tous cas, vu les rumeurs sur les futurs devices, on a plutot intérêt de s'y mettre.


     


    Sinon, va falloir faire des tests dans tous les sens..




     


    Oui, et d'ailleurs, je vais m'y mettre très bientôt.


    Je donnerai mon point de vue.



  • En tous cas, vu les rumeurs sur les futurs devices, on a plutot intérêt de s'y mettre.


    Sinon, va falloir faire des tests dans tous les sens..




     


    Je pense que quand on démarre une nouvelle appli, on a intérêt à  en profiter pour se mettre à  jour au niveau des outils. Ca permet d'être moins dépassé lorsque tout d'un coup on n'a plus le choix. Et une fois qu'on maà®trise, c'est toujours ça de gagné.

  • muqaddarmuqaddar Administrateur

    ça y est, premier VC en autolayout.


    Je me casse les dents, 14 warnings, direction les tutorials...


  • xylowebxyloweb Membre
    février 2014 modifié #18

    xcode 5.1 devrait participer à  la prise en main de la bête :



    Highlights for Xcode 5.1 Beta

    Xcode 5.1 beta includes the following highlighted features:

    ...
    Enhancements to Auto Layout constraints and editing tools in Interface Builder
    ...

    sinon perso, j'utilise à  fond les contraintes Auto Layout et il faut reconnaà®tre que c'est plus tôt sympa... (dev sous iPhone 4S, iPhone 5, iPad mini, iPad retina, ...)


  • FKDEVFKDEV Membre
    février 2014 modifié #19


    ??? Je ne sais pas ce que vous avez avec AutoLayout mais moi depuis Xcode5 je le trouve au contraire plutôt bien fait et n'ai jamais eu à  éditer des choses à  la main ou quoi. Certes il pourrait y avoir encore quelques améliorations, mais Xcode propose différentes façons de rajouter des contraintes qui sont toutes assez claires et cachent bien la complexité du problème en rendant tout ça accessible et simple à  manipuler (pas comme Xcode4 !)




     


    Il y a beaucoup de progrès dans Xcode 5, c'est vrai.


    Mais, récemment j'ai réglé trois ou quatres contraintes autour d'une ImageView avant de m'apercevoir que ça serait mieux de mettre un UIButton. J'ai pas trouvé comment remplacer l'imageview par un UIButton sans perdre les contraintes donc j'ai tapé dans le xib à  la main.


     


    Plus généralement, il y a encore trop de clics à  faire. J'aimerais bien avoir la possibilité de rentrer les contraintes sous en forme de chaà®ne de caractères en complément de ce qui existe à  la souris, qui est très bien mais pas assez productif.


  • AliGatorAliGator Membre, Modérateur
    Bah le bouton en bas d'InterfaceBuilder pour ajouter plusieurs contraintes d'un clic, il te va pas ?
  • xylowebxyloweb Membre
    février 2014 modifié #21

    il faut utiliser la déclaration sous forme de chaine : 


    Visual Format Language


     



    constraintsWithVisualFormat:options:metrics:views:

    Create constraints described by an ASCII art-like visual format string.


  • muqaddarmuqaddar Administrateur

    Il faut faire attention aux corrections automatiques proposées par Xcode.


    J'ai pu taire tous mes warnings, mais au prochain lancement, gros plantage sur les contraintes.


  • AliGatorAliGator Membre, Modérateur
    Bah forcément si tu mets trop de degrés de contraintes, ça va planter (surdéfinition des contraintes, trop de degrés de liaison) tu surdéfinis ton système. Comme quand tu dis que ta vue doit être centrée horizontalement sur ton écran ET doit faire 300 de large, ET en plus doit être à  10 points du bord gauche de ton écran. La dernière contrainte est inutile et surdéfinit ton système. Pire encore si au lieu de mettre une contrainte à  10 sur le bord gauche tu la mets à  autre chose, il y a inconsistance de ton système.

    A l'inverse, si tu ne mets pas assez de degrés de liaison (trop de degrés de libertés), ta contrainte va être sous-définie et va laisser de la liberté de placement à  tes vues. Il y a alors une dimension qui va pouvoir être placée un peu n'importe où puisque tu ne l'as pas définie.

    Mais si tu définis correctement ton système, et donc que pour chaque vue tu mets juste ce qu'il faut (ni trop ni pas assez) de contraintes pour définir avec exactitude sa position et ses dimensions, alors aucun problème.
  • muqaddarmuqaddar Administrateur


    Bah forcément si tu mets trop de degrés de contraintes, ça va planter (surdéfinition des contraintes, trop de degrés de liaison) tu surdéfinis ton système. Comme quand tu dis que ta vue doit être centrée horizontalement sur ton écran ET doit faire 300 de large, ET en plus doit être à  10 points du bord gauche de ton écran. La dernière contrainte est inutile et surdéfinit ton système. Pire encore si au lieu de mettre une contrainte à  10 sur le bord gauche tu la mets à  autre chose, il y a inconsistance de ton système.


    A l'inverse, si tu ne mets pas assez de degrés de liaison (trop de degrés de libertés), ta contrainte va être sous-définie et va laisser de la liberté de placement à  tes vues. Il y a alors une dimension qui va pouvoir être placée un peu n'importe où puisque tu ne l'as pas définie.


    Mais si tu définis correctement ton système, et donc que pour chaque vue tu mets juste ce qu'il faut (ni trop ni pas assez) de contraintes pour définir avec exactitude sa position et ses dimensions, alors aucun problème.




     


    Je suis bien d'accord et c'est logique.


    Mais là  où je voulais en venir c'est qu'il donne des mauvaises suggestions.

  • CéroceCéroce Membre, Modérateur

    Mais là  où je voulais en venir c'est qu'il donne des mauvaises suggestions.

    Oui, c'est vrai, la correction automatique résout bien les erreurs, mais se trompe systématiquement sur nos intentions.
  • muqaddarmuqaddar Administrateur
    février 2014 modifié #27

    Bon, ce matin, ça va beaucoup mieux !


    Je crois que j'ai pigé le truc (à  force de tâtonner).


     


    Les conseils donnés sont quand-même bons au final.


     


    J'ai pas commencé par le plus simple...


     


  • Un autre truc qui m'inquiète un peu avec auto layout quand je vois ta vue, c'est la maintenance.


    Etant donné qu'il y a plusieurs manières de définir les contraintes d'une vue, avant de les modifier il va falloir comprendre la logique de layout qui a été mis en place.


    Vous me direz c'est pareil avec du code...

  • BooleanneBooleanne Membre
    février 2014 modifié #29


    Un autre truc qui m'inquiète un peu avec auto layout quand je vois ta vue, c'est la maintenance.




     


    C'est sûr, quand on voit le nombre de contraintes dans la liste, ça fait peur. Et encore, il n'y a pas trop d'éléments dans son exemple.

  • muqaddarmuqaddar Administrateur


    Un autre truc qui m'inquiète un peu avec auto layout quand je vois ta vue, c'est la maintenance.


    Etant donné qu'il y a plusieurs manières de définir les contraintes d'une vue, avant de les modifier il va falloir comprendre la logique de layout qui a été mis en place.


    Vous me direz c'est pareil avec du code...




     


    Oui tu veux dire quand on travaille à  plusieurs... où qu'on reprend le travail d'un autre.


     


    Sinon, y'a pas un moyen facile de convertir un layout iPad vers un layout iPhone ?


    Quand on copie la vue, toutes les contraintes sautent.

  • muqaddarmuqaddar Administrateur


    C'est sûr, quand on voit le nombre de contraintes dans ta liste, ça fait un peu peur ! 


     


     


    C'est sûr, quand on voit le nombre de contraintes dans la liste, ça fait peur. Et encore, il n'y a pas trop d'éléments dans son exemple.




     


    Il y a 12 éléments.


    Par contre, les contraintes de taille sur les éléments eux-mêmes sont masqués dans ma capture d'écran (ça fait encore plus de contraintes).

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