Sự khác biệt giữa leftAnchor và leadAnchor?


119

Tôi đã làm việc với các ràng buộc trong Swift cho iOS và hầu hết các quy ước / tài liệu đặt tên khiến mọi thứ khá tự giải thích, nhưng một điều khiến tôi gần đây đã nhầm lẫn là hai cặp của lớp NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

cùng với

trailingAnchor, rightAnchor

Khi tôi đã đặt các ràng buộc theo chương trình trong ứng dụng iOS của mình, tôi nhận thấy rằng tôi có thể sử dụng chúng hoàn toàn thay thế cho nhau. Nếu tôi sử dụng leadAnchor, chạy ứng dụng và quan sát hành vi, sau đó sử dụng leftAnchor, chạy ứng dụng và quan sát hành vi, nó hoạt động hoàn toàn giống nhau.

Tôi đã kiểm tra tài liệu từ developer.apple.com và kết quả thậm chí hoàn toàn giống nhau (bỏ qua sự khác biệt về tên). Ví dụ: so sánh đầuAnchor và leftAnchor:

"Sử dụng liên kết này để tạo các ràng buộc với cạnh hàng đầu của chế độ xem. Bạn chỉ có thể kết hợp liên kết này với một tập hợp con của các neo NSLayoutXAxisAnchor. Bạn có thể kết hợp một leadAnchor với một leadAnchor khác, một trailingAnchor hoặc centerXAnchor. Để biết thêm thông tin, hãy xem NSLayoutAnchor Class Tài liệu tham khảo."

so với:

"Sử dụng liên kết này để tạo các ràng buộc với cạnh trái của chế độ xem. Bạn chỉ có thể kết hợp liên kết này với một tập hợp con của các neo NSLayoutXAxisAnchor. Bạn có thể kết hợp một leftAnchor với một leftAnchor khác, một rightAnchor hoặc centerXAnchor. Để biết thêm thông tin, hãy xem NSLayoutAnchor Class Tài liệu tham khảo."

Có ai biết nếu có bất kỳ sự khác biệt dự định giữa các tài sản này?

Câu trả lời:


272

Điều này đã được đề cập (ngắn gọn) trong một trong những video WWDC 2015 về Mysteries of Autolayout (Tôi nghĩ đó là phần 1 nhưng cả hai đều đáng xem).

Ràng buộc Left và Right là tuyệt đối, chúng sẽ luôn tham chiếu đến bên trái / bên phải của màn hình hoặc điều khiển. Các ràng buộc đầu và cuối bị ảnh hưởng bởi ngôn ngữ thiết bị; Ở các ngôn ngữ mà hướng đọc từ trái sang phải (tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha, v.v.) đầu & trái (và dấu & phải) có thể được sử dụng thay thế cho nhau. Trong các ngôn ngữ mà hướng đọc từ phải sang trái (ví dụ: tiếng Do Thái, tiếng Ả Rập) thì 'hàng đầu' sẽ là phía bên phải và 'dấu vết' sẽ là phía bên trái.

Lời khuyên trong video là hầu như bạn nên sử dụng đầu / cuối thay vì trái / phải trừ khi bạn có yêu cầu cụ thể về trái / phải tuyệt đối.

Hãy xem xét 'dạng' điển hình của nhãn và trường văn bản. Nếu bạn sử dụng các ràng buộc đầu / cuối thì bạn sẽ nhận được nhãn ở bên trái và trường văn bản ở bên phải cho ngôn ngữ tiếng Anh và nhãn ở bên phải, trường văn bản ở bên trái cho ngôn ngữ tiếng Do Thái.

Nếu bạn tạo một ứng dụng dành cho trẻ em trong đó bạn đang dạy từ trái sang phải và bạn luôn muốn có nút 'trái' ở bên trái màn hình thì ràng buộc trái / phải sẽ phù hợp


9
Thông tin tuyệt vời, cảm ơn bạn đã trả lời. Tôi ước tôi đã xem video, rồi chính tôi cũng biết điều này! Tôi sẽ đánh dấu đây là câu trả lời được chấp nhận. Cảm ơn một lần nữa
Michael Fourre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.