Différence entre leftAnchor et LeadingAnchor?

120

J'ai travaillé avec des contraintes dans Swift pour iOS, et la plupart des conventions de dénomination / documentation rendent les choses assez explicites, mais une chose qui m'a récemment dérouté est deux paires de la classe NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

de même que

trailingAnchor, rightAnchor

Lorsque j'ai défini des contraintes par programmation dans mon application iOS, j'ai constaté que je pouvais les utiliser de manière totalement interchangeable. Si j'utilise LeadingAnchor, exécutez l'application et observez le comportement, puis utilisez leftAnchor, exécutez l'application et observez le comportement, il fonctionne exactement de la même manière.

J'ai vérifié la documentation de developer.apple.com, et les résultats sont même exactement les mêmes (en ignorant la différence de noms). Par exemple en comparant LeadingAnchor et leftAnchor:

"Utilisez cette ancre pour créer des contraintes avec le bord d'attaque de la vue. Vous ne pouvez combiner cette ancre qu'avec un sous-ensemble des ancres NSLayoutXAxisAnchor. Vous pouvez combiner une ancre principale avec une autre LeadingAnchor, une trailingAnchor ou une centerXAnchor. Pour plus d'informations, voir NSLayoutAnchor, classe Référence."

comparer aux:

"Utilisez cette ancre pour créer des contraintes avec le bord gauche de la vue. Vous ne pouvez combiner cette ancre qu'avec un sous-ensemble des ancres NSLayoutXAxisAnchor. Vous pouvez combiner une ancre leftAnchor avec une autre leftAnchor, une rightAnchor ou une centerXAnchor. Pour plus d'informations, voir NSLayoutAnchor, classe Référence."

Est-ce que quelqu'un sait s'il y a une différence voulue entre ces propriétés?

Michael Fourré
la source

Réponses:

273

Cela a été couvert (brièvement) dans l'une des vidéos de la WWDC 2015 sur les Mystères de la mise en page automatique (je pense que c'était la première partie, mais les deux valent la peine d'être visionnées).

Les contraintes Gauche et Droite sont absolues, elles feront toujours référence à la gauche / droite de l'écran ou du champ. Les contraintes de début et de fin sont affectées par les paramètres régionaux du périphérique; Dans les paramètres régionaux où le sens de lecture est de gauche à droite (anglais, français, espagnol, etc.), le début et la gauche (et le dernier et la droite) peuvent être utilisés de manière interchangeable. Dans les localités où la direction de lecture est de droite à gauche (par exemple l'hébreu, l'arabe), alors «leader» sera le côté droit et «fin» sera le côté gauche.

Le conseil dans la vidéo était que vous devriez presque toujours utiliser le début / fin plutôt que gauche / droite, sauf si vous avez une exigence spécifique pour la gauche / droite absolue.

Considérez la «forme» typique d'une étiquette et d'un champ de texte. Si vous utilisez des contraintes de début / de fin, vous obtiendrez le libellé à gauche et le champ de texte à droite pour une langue anglaise et l'étiquette à droite, le champ de texte à gauche pour une langue hébraïque.

Si vous avez créé une application pour enfants dans laquelle vous enseigniez de gauche à droite et que vous vouliez toujours le bouton `` gauche '' à gauche de l'écran, des contraintes gauche / droite seraient appropriées

Paulw11
la source
9
Excellente information, merci pour la réponse. J'aurais aimé regarder la vidéo, alors je l'aurais su moi-même! Je marquerai ceci comme la réponse acceptée. Merci encore
Michael Fourre