Разница между leftAnchor и LeadingAnchor?

120

Я работал с ограничениями в Swift для iOS, и большинство соглашений / документации об именах делают вещи довольно понятными, но одна вещь, которая недавно смутила меня, - это две пары класса NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

вместе с

trailingAnchor, rightAnchor

Когда я программно установил ограничения в своем приложении для iOS, я обнаружил, что могу использовать их как взаимозаменяемые. Если я использую leadAnchor, запускаю приложение и наблюдаю за поведением, а затем использую leftAnchor, запускаю приложение и наблюдаю за поведением, оно работает точно так же.

Я проверил документацию на developer.apple.com, и результаты даже точно такие же (без учета разницы в именах). Например, сравнивая leadAnchor и leftAnchor:

"Используйте эту привязку для создания ограничений с передним краем представления. Вы можете комбинировать эту привязку только с подмножеством привязок NSLayoutXAxisAnchor. Вы можете комбинировать ведущую анкерную опору с другим ведущим, trailingAnchor или centerXAnchor. Для получения дополнительной информации см. NSLayoutAnchor Class Ссылка."

сравнить с:

"Используйте эту привязку для создания ограничений с левым краем представления. Вы можете комбинировать эту привязку только с подмножеством привязок NSLayoutXAxisAnchor. Вы можете комбинировать leftAnchor с другим leftAnchor, rightAnchor или centerXAnchor. Дополнительные сведения см. В разделе Класс NSLayoutAnchor. Ссылка."

Кто-нибудь знает, есть ли какая-то разница между этими свойствами?

Майкл Фурр
источник

Ответы:

273

Об этом было рассказано (вкратце) в одном из видеороликов WWDC 2015 о Тайнах автоперемещения (я думаю, это была часть 1, но оба стоит посмотреть).

Ограничения Left и Right являются абсолютными, они всегда будут относиться к левой / правой части экрана или к элементу управления. Начальные и конечные ограничения зависят от языкового стандарта устройства; В регионах, где направление чтения слева направо (английский, французский, испанский и т. Д.), Ведущее и левое (а также конечное и правое) могут использоваться взаимозаменяемо. В регионах, где направление чтения - справа налево (например, на иврите, арабском языке), «ведущий» будет правой стороной, а «конечный» - левой стороной.

Совет в видео заключался в том, что вам почти всегда следует использовать начало / конец, а не влево / вправо, если у вас нет конкретных требований для абсолютного влево / вправо.

Рассмотрим типичную «форму» метки и текстового поля. Если вы используете ведущие / конечные ограничения, вы получите метку слева и текстовое поле справа для английского языка и метку справа, текстовое поле слева для языкового стандарта иврита.

Если вы создали детское приложение, в котором вы учили слева направо и всегда хотели, чтобы кнопка «влево» находилась слева от экрана, тогда ограничения влево / вправо были бы подходящими.

Paulw11
источник
9
Отличная информация, спасибо за ответ. Хотел бы я посмотреть видео, тогда я бы сам это знал! Я отмечу это как принятый ответ. Еще раз спасибо
Майкл Фурр