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:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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
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.
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.
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.
Céroce, tu m'as grillée d'une minute !
Tu l'as acheté ce livre ?
Il y a quelques tutos chez RayWenderlich aussi.
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...).
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.
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.
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é.
ça y est, premier VC en autolayout.
Je me casse les dents, 14 warnings, direction les tutorials...
xcode 5.1 devrait participer à la prise en main de la bête :
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, ...)
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.
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.
Exemple assez sympa :
http://www.objc.io/issue-3/advanced-auto-layout-toolbox.html
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.
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.
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...
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.
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.
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).