leftAnchor和LeadingAnchor之间的区别?


119

我一直在使用Swift for iOS的约束进行操作,并且大多数命名约定/文档都使事情变得很容易解释,但是最近让我感到困惑的一件事是两对NSLayoutXAxisAnchor类:

leadingAnchor, leftAnchor

随着

trailingAnchor, rightAnchor

当我在iOS应用中以编程方式设置约束时,发现可以完全互换使用这些约束。如果我使用leadAnchor,请运行该应用程序并观察其行为,然后使用leftAnchor,请运行该应用程序并观察该行为,其功能完全相同。

我从developer.apple.com签出了文档,结果甚至是完全一样的(忽略名称的差异)。例如,比较leadAnchor和leftAnchor:

“使用此锚点来创建视图前沿的约束。您只能将此锚点与NSLayoutXAxisAnchor锚点的子集结合使用。可以将LeadingAnchor与另一个LeadingAnchor,trailingAnchor或centerXAnchor结合使用。有关更多信息,请参见NSLayoutAnchor类参考。”

相比于:

“使用此锚来创建视图左边缘的约束。您只能将此锚与NSLayoutXAxisAnchor锚的子集结合使用。可以将leftAnchor与另一个leftAnchor,rightAnchor或centerXAnchor结合使用。有关更多信息,请参见NSLayoutAnchor类参考。”

有谁知道这些属性之间是否有预期的区别?

Answers:


271

(简短地)在WWDC 2015的有关自动布局奥秘的视频中(我认为这是第1部分,但都值得一看)进行了介绍。

左约束和右约束是绝对的,它们将始终引用屏幕或控件的左/右。前导约束和尾随约束受设备区域设置的影响;在阅读方向从左到右(英语,法语,西班牙语等)的语言环境中,前导和左(以及尾随和右)可以互换使用。在阅读方向为从右到左的语言环境(例如希伯来语,阿拉伯语)中,“ leading”将是右侧,而“ trailing”将是左侧。

视频中的建议是,除非您对绝对左/右有特殊要求,否则几乎应该始终使用前导/尾随而不是左/右。

考虑标签和文本字段的典型“形式”。如果您使用前导/尾随约束,则对于英语语言环境,您将在左侧获得标签,在右侧获得文本字段;对于希伯来语语言环境,则将获得右侧获得标签,在左侧,获得文本字段。

如果您制作的儿童应用程序是在从右向左教学的地方,并且您一直希望屏幕左侧的“左”按钮,那么适合左/右约束


9
优秀的信息,谢谢您的答复。我希望我能观看视频,然后我自己就会知道这一点!我将其标记为已接受的答案。再次感谢
Michael Fourre
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.