左锚和主锚的区别?

我一直在研究 iOS 环境下 Swift 的约束条件,大多数命名约定/文档使事情变得不言而喻,但最近让我感到困惑的一件事是两对 NSLayoutXAxisAnchor 类:

leadingAnchor, leftAnchor

还有

trailingAnchor, rightAnchor

当我在我的 iOS 应用程序中以编程方式设置约束时,我发现我可以完全互换地使用这些约束。如果我使用 lead ingAnchor,运行应用程序并观察行为,然后使用 left Anchor,运行应用程序并观察行为,它的功能完全相同。

我查阅了 developer.apple.com 的文档,结果甚至完全一样(忽略了名称上的差异)。例如,比较 lead Anchor 和 left Anchor:

”使用此锚创建具有视图前沿的约束。 只能将此锚与 NSLayoutXAxisAnchor 锚 另一个领先的锚,一个尾随的锚,或一个中心 XAnchor。更多 信息,请参阅 NSLayoutAnchor 类参考。”

相比之下:

”使用此锚创建具有视图左边缘的约束 只能将此锚与 NSLayoutXAxisAnchor 的子集合并 您可以将 left 锚与另一个 left 锚组合在一起,一个 更多信息,请参见 NSLayoutAnchor 类参考

有人知道这些属性之间是否有任何预期的差异吗?

22756 次浏览

这在2015年 WWDC 的一个关于 自动布局之谜的视频中(简要地)有所涉及(我认为这是第一部分,但是两部分都值得一看)。

左和右约束是绝对的,它们总是指屏幕或控件的左/右。前导和尾随约束受设备区域设置的影响; 在阅读方向从左到右(英语、法语、西班牙语等)的区域设置中,前导和左(以及尾随和右)可以互换使用。在阅读方向从右到左的地区(如希伯来语,阿拉伯语) ,“领导”将是右侧,“拖尾”将是左侧。

视频中的建议是,你应该几乎总是使用前导/尾随而不是左/右,除非你对绝对左/右有特定的要求。

考虑标签和文本字段的典型“形式”。如果您使用前/后约束,那么您将获得左侧的标签和右侧的文本字段(用于英语区域设置) ,右侧的标签和左侧的文本字段(用于希伯来语区域设置)。

如果你开发了一个儿童应用程序,从右向左教学,而 一直都是希望在屏幕的左侧显示“左”按钮,那么左/右约束将是合适的