Différence entre leftAnchor et leadingAnchor?

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

leadingAnchor, leftAnchor 

de même que

 trailingAnchor, rightAnchor 

Lorsque j’ai défini des contraintes par programme 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 extrait la documentation de developer.apple.com et les résultats sont 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 pouvez uniquement combiner cette ancre avec un sous-ensemble des ancres NSLayoutXAxisAnchor. Vous pouvez combiner un ancre leader avec un autre ancre principal, un trailingAnchor ou un centerXAnchor. Pour plus d’informations, voir Classe NSLayoutAnchor Référence.”

comparer aux:

“Utilisez cette ancre pour créer des contraintes avec le bord gauche de la vue. Vous pouvez uniquement combiner cette ancre avec un sous-ensemble des ancres NSLayoutXAxisAnchor. Vous pouvez combiner un leftAnchor avec un autre leftAnchor, rightAnchor ou centerXAnchor. Pour plus d’informations, voir Classe NSLayoutAnchor Référence.”

Est-ce que quelqu’un sait s’il existe une différence entre ces propriétés?

Cela a été couvert (brièvement) dans l’une des vidéos de la WWDC 2015 sur les mystères d’Autolayout (je pense que c’était la première partie, mais les deux valent la peine d’être regardés).

Les contraintes gauche et droite sont absolues, elles se réfèrent toujours à la gauche / droite de l’écran ou au contrôle. Les contraintes de début et de fin sont affectées par les parameters régionaux du périphérique; Dans les localités où la direction de la lecture est de gauche à droite (anglais, français, espagnol, etc.), il est possible d’utiliser indifféremment les commandes gauche et droite (et la fin et la droite). Dans les localités où la direction de lecture est juste à gauche (par exemple l’hébreu), «leader» sera le côté droit et «suivi» sera le côté gauche.

Le conseil dans la vidéo était que vous devriez presque toujours utiliser le début / la fin plutôt que la gauche / droite à moins que vous ayez une exigence spécifique de gauche / droite absolue.

Considérons la forme typique d’une étiquette et d’un champ de texte. Si vous utilisez des contraintes de début / fin, vous obtiendrez le libellé à gauche et le champ de texte à droite pour les parameters régionaux anglais et l’étiquette à droite, le champ de texte à gauche pour les parameters régionaux en hébreu.

Si vous avez créé une application pour enfants où vous enseigniez de gauche à droite et que vous vouliez toujours le bouton «gauche» à gauche de l’écran, les contraintes gauche / droite seraient appropriées.