Разница между левым и ведущим анчором?


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

leadingAnchor, leftAnchor

вместе с

trailingAnchor, rightAnchor

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

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

" используйте этот якорь для создания ограничений с передней кромкой вида. Вы можете объединить этот якорь только с подмножеством NSLayoutXAxisAnchor якоря. Вы можете совместить ведущее звено с еще один ведущий анчор, следящий анчор или центральный анчор. Для большего сведения см. В разделе ссылка на класс NSLayoutAnchor."

сравнить с:

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

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

1 59

1 ответ:

Это было рассмотрено (кратко) в одном из видеороликов WWDC 2015 на тайны Autolayout (Я думаю, что это была часть 1, но оба стоит посмотреть).

левое и правое ограничения являются абсолютными, они всегда будут относиться к левой/правой части экрана или контроля. Ограничения Leading и trailing зависят от локали устройства; в локалях, где направление чтения слева направо (английский, французский, испанский и т. д.) leading & left (и trailing & right) может использоваться взаимозаменяемо. В локалях, где направление чтения справа налево (например, на иврите), тогда "ведущий" будет правой стороной, а "трейлинг" - левой стороной.

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

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

Если вы сделали детское приложение, где вы преподавали слева справа, и вы всегда хотел, чтобы "левая" кнопка слева от экрана, то левые / правые ограничения были бы уместны