Różnica między leftAnchor a leadAnchor?

119

Pracowałem z ograniczeniami w Swift na iOS i większość konwencji nazewnictwa / dokumentacji sprawia, że ​​rzeczy są dość oczywiste, ale jedną rzeczą, która ostatnio mnie zmyliła, są dwie pary klasy NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

wraz z

trailingAnchor, rightAnchor

Kiedy ustawiłem ograniczenia programowo w mojej aplikacji na iOS, stwierdziłem, że mogę ich używać całkowicie zamiennie. Jeśli używam leadAnchor, uruchamiam aplikację i obserwuję zachowanie, a następnie używam leftAnchor, uruchamiam aplikację i obserwuję zachowanie, działa dokładnie tak samo.

Sprawdziłem dokumentację z developer.apple.com i wyniki są dokładnie takie same (pomijając różnicę w nazwach). Na przykład porównanie leadAnchor i leftAnchor:

„Użyj tej kotwicy, aby utworzyć ograniczenia z wiodącą krawędzią widoku. Tę kotwicę można łączyć tylko z podzbiorem kotwic NSLayoutXAxisAnchor. Możesz łączyć wiodącą kotwicę z inną wiodącą kotwicą, końcową kotwicą lub centerXAnchor. Aby uzyskać więcej informacji, zobacz NSLayoutAnchor Class Odniesienie."

porównać do:

„Użyj tej kotwicy, aby utworzyć ograniczenia z lewą krawędzią widoku. Możesz łączyć tę kotwicę tylko z podzbiorem kotwic NSLayoutXAxisAnchor. Możesz połączyć leftAnchor z inną leftAnchor, rightAnchor lub centerXAnchor. Aby uzyskać więcej informacji, zobacz NSLayoutAnchor Class Odniesienie."

Czy ktoś wie, czy istnieje jakaś zamierzona różnica między tymi właściwościami?

Michael Fourre
źródło

Odpowiedzi:

272

Zostało to omówione (krótko) w jednym z filmów WWDC 2015 na temat Mysteries of Autolayout (myślę, że to była część 1, ale obie są warte obejrzenia).

Ograniczenia lewo i prawo są bezwzględne, zawsze będą odnosić się do lewej / prawej strony ekranu lub kontrolki. Początkowe i końcowe ograniczenia zależą od ustawień regionalnych urządzenia; W lokalizacjach, w których kierunek czytania jest od lewej do prawej (angielski, francuski, hiszpański itd.), Początkowe i lewe (i końcowe i prawe) mogą być używane zamiennie. W lokalizacjach, w których kierunek czytania jest od prawej do lewej (np. Hebrajski, arabski), „wiodący” będzie po prawej stronie, a „na końcu” będzie po lewej stronie.

Porada w filmie była taka, że ​​prawie zawsze powinieneś używać wiodących / końcowych zamiast lewej / prawej, chyba że masz określone wymagania dotyczące bezwzględnej lewej / prawej strony.

Rozważ typową „formę” etykiety i pola tekstowego. Jeśli użyjesz początkowych / końcowych ograniczeń, otrzymasz etykietę po lewej stronie i pole tekstowe po prawej dla języka angielskiego i etykietę po prawej stronie, pole tekstowe po lewej stronie dla języka hebrajskiego.

Jeśli stworzyłeś aplikację dla dzieci, w której uczysz od lewej do prawej i zawsze chciałeś mieć przycisk „lewy” po lewej stronie ekranu, wtedy ograniczenia lewo / prawo byłyby odpowiednie

Paulw11
źródło
9
Doskonała informacja, dziękuję za odpowiedź. Żałuję, że nie obejrzałem tego wideo, bo sam bym to wiedział! Oznaczę to jako zaakceptowaną odpowiedź.
Jeszcze