web-dev-qa-db-fra.com

Différence entre leftAnchor et LeadingAnchor?

Je travaille avec des contraintes dans Swift pour iOS et la plupart des conventions de nommage/documentation rendent les choses assez explicites, mais deux choses me confondent récemment: 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, lancez l'application et observez le comportement, puis utilisez leftAnchor, lancez l'application et observez le comportement, il fonctionne exactement de la même manière.

J'ai consulté la documentation de developer.Apple.com et les résultats sont exactement identiques (en ignorant la différence de noms). Par exemple, en comparant les propriétés LeadingAnchor et leftAnchor:

"Utilisez cette ancre pour créer des contraintes avec le bord avant de la vue. Vous pouvez uniquement combiner cette ancre avec un sous-ensemble des ancres NSLayoutXAxisAnchor. Vous pouvez combiner un leaderAnchor avec un autre LeadingAnchor, un trailingAnchor ou un centerXAnchor. Pour plus d'informations, voir 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, un rightAnchor ou un centerXAnchor. Pour plus d'informations, voir NSLayoutAnchor. Référence."

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

97
Michael Fourre

Cela a été couvert (brièvement) dans l'une des vidéos de la WWDC 2015 sur le Mysteries of Autolayout (je pense que c'était la partie 1, mais les deux valent la peine d'être visionnées).

Les contraintes Left et Right sont absolues, elles feront toujours référence à la gauche/droite de l'écran ou du contrôle. Les contraintes de début et de fin sont affectées par les paramètres régionaux du périphérique. Dans les endroits où le sens de la lecture est de gauche à droite (anglais, français, espagnol, etc.), les caractères de direction et de gauche (et de fuite à droite) peuvent être utilisés indifféremment. Dans les lieux où la direction de lecture est droite à gauche (par exemple, l'hébreu, l'arabe), le mot "premier" sera le côté droit et le mot "suivi" sera le côté gauche.

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

Considérez le "formulaire" 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 paramètres régionaux anglais et le libellé à droite, ainsi que le champ de texte à gauche pour les paramètres hébraïques.

Si vous avez créé une application pour enfants où vous enseigniez à gauche de la droite et que vous toujours vouliez utiliser le bouton 'gauche' à gauche de l'écran, des contraintes gauche/droite conviendraient

214
Paulw11