Perbedaan antara leftAnchor dan leadingAnchor?

120

Saya telah bekerja dengan batasan di Swift untuk iOS, dan sebagian besar konvensi / dokumentasi penamaan membuat semuanya cukup jelas, tetapi satu hal yang baru-baru ini membingungkan saya adalah dua pasang kelas NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

bersama

trailingAnchor, rightAnchor

Ketika saya telah menetapkan batasan secara terprogram di aplikasi iOS saya, saya telah menemukan bahwa saya dapat menggunakan ini sepenuhnya secara bergantian. Jika saya menggunakan leadingAnchor, menjalankan aplikasi dan mengamati perilakunya, lalu menggunakan leftAnchor, menjalankan aplikasi, dan mengamati perilakunya, fungsinya persis sama.

Saya memeriksa dokumentasi dari developer.apple.com, dan hasilnya bahkan sama persis (mengabaikan perbedaan nama). Misalnya membandingkan leadingAnchor dan leftAnchor:

"Gunakan jangkar ini untuk membuat batasan dengan tepi depan tampilan. Anda hanya dapat menggabungkan jangkar ini dengan subset dari jangkar NSLayoutXAxisAnchor. Anda dapat menggabungkan leadingAnchor dengan leadingAnchor lain, trailingAnchor, atau centerXAnchor. Untuk informasi selengkapnya, lihat NSLayoutAnchor Class Referensi."

dibandingkan dengan:

"Gunakan jangkar ini untuk membuat batasan dengan tepi kiri tampilan. Anda hanya dapat menggabungkan jangkar ini dengan subset dari jangkar NSLayoutXAxisAnchor. Anda dapat menggabungkan leftAnchor dengan leftAnchor, rightAnchor, atau centerXAnchor. Untuk informasi lebih lanjut, lihat NSLayoutAnchor Class Referensi."

Adakah yang tahu jika ada perbedaan yang dimaksudkan antara properti ini?

Michael Fourre
sumber

Jawaban:

273

Ini tercakup (secara singkat) di salah satu video WWDC 2015 di Mysteries of Autolayout (saya pikir itu adalah bagian 1 tetapi keduanya layak untuk ditonton).

Batasan Kiri dan Kanan bersifat mutlak, mereka akan selalu mengacu pada kiri / kanan layar atau kontrol. Batasan awal dan akhir dipengaruhi oleh lokal perangkat; Dalam bahasa lokal di mana arah membaca adalah dari kiri ke kanan (Inggris, Prancis, Spanyol, dan seterusnya), arah depan & kiri (dan belakang & kanan) dapat digunakan secara bergantian. Dalam bahasa lokal di mana arah pembacaan adalah dari kanan ke kiri (mis. Ibrani, Arab) maka 'leading' akan menjadi sisi kanan dan 'trailing' adalah sisi kiri.

Saran dalam video tersebut adalah Anda harus hampir selalu menggunakan leading / trailing daripada left / right kecuali Anda memiliki persyaratan khusus untuk mutlak kiri / kanan.

Pertimbangkan 'bentuk' khas dari label dan bidang teks. Jika Anda menggunakan batasan leading / trailing maka Anda akan mendapatkan label di sebelah kiri dan bidang teks di sebelah kanan untuk bahasa Inggris dan label di sebelah kanan, bidang teks di sebelah kiri untuk bahasa Ibrani.

Jika Anda membuat aplikasi anak-anak tempat Anda mengajar kiri dari kanan dan Anda selalu menginginkan tombol 'kiri' di kiri layar, maka batasan kiri / kanan akan sesuai

Paulw11
sumber
9
Informasi yang sangat baik, terima kasih atas jawabannya. Saya berharap saya menonton videonya, maka saya akan tahu ini sendiri! Saya akan menandai ini sebagai jawaban yang diterima. Terima kasih lagi
Michael Fourre