Xcode 8:自动布局前导和尾随

问题描述 投票:3回答:4

我一周前开始iOS开发,目前正在学习AutoLayout。可悲的是,我无法绕过LeadingTrailing约束,何时使用它们,我根本不理解它们。我做了一些研究,现在我实际上更加困惑。有人能举一些例子吗?

此定义来自Apple网站:

当您向后缘移动时,值会增加。对于从左到右的布局方向,当您向右移动时,值会增加。对于从右到左的布局方向,当您向左移动时,值会增加。

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/AnatomyofaConstraint.html

谢谢

ios xcode user-interface autolayout
4个回答
10
投票

TL; DR

他们不能只是左右命名,因为它必须在两个布局方向都有意义:从左到右和从右到左。因此落后和领导。

更长的答案

我认为你问自己的问题是为什么苹果公司不仅仅是左右命名。什么是尾随和领先。

这背后的原因是可能有2种不同的布局。从iOS 9开始,从左到右语言(如英语)的UI布局是......从左到右。但就阿拉伯语而言,它是从右向左的。

但是,Autolayout非常智能,您无需为这两种类型的布局设置两次布局。您只需将其设置一次,系统会自动反转它,以防您的应用支持从右到左的语言。


3
投票

对于这个答案,请忽略从右到左流动的阿拉伯语和希伯来语等语言。我将回答大多数从左到右流动的语言。

对于这些语言,“前导”约束确定对象左侧的空间,“尾随”约束确定右侧的空间。 (一个很好的助记符是左边和前面都以“L”开头。)

对于以相反方式流动的语言,侧面会切换,但“前导”仍会将对象固定到前缘(您开始阅读的一侧)。


0
投票

前导意味着视图的起点,尾随意味着视图的终点。

例如,如果一个视图有一个框架(x: 0, y: 0, width: 100, height: 100),它的前导将为0,尾随将为100。

因此,如果你从领先位置向右移动,前导点和移动点之间的距离将增加,同样在尾随的情况下会发生这种情况。


0
投票

在WWDC 2015关于Autolayout之谜的视频中(简要地)介绍了这一点(我认为这是第1部分,但都值得关注)。

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

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

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

如果您创建了一个儿童应用程序,您从右边教导左侧,并且您一直想要屏幕左侧的“左”按钮,那么左/右约束将是合适的。

在这里查看原始答案:Difference between leftAnchor and leadingAnchor?

© www.soinside.com 2019 - 2024. All rights reserved.