autolayout是否添加了我无法删除的宽度约束?

时间:2017-11-06 02:49:24

标签: ios autolayout storyboard interface-builder nslayoutconstraint

每当我为iOS写作时,我总是对Autolayout感到困惑。有没有其他人有这些问题?你怎么克服它?你有没有像SnapKit那样的替代品?

这就是我想要完成的事情:

            UITableViewCell  
+-------------------------------------+
| +-------------------------+ +-----+ |
| | Label #1                | | #2  | |
| +-------------------------+ +-----+ |
+-------------------------------------+

我想要以下内容:

  • 标签#1垂直居中
  • 标签#2垂直居中
  • 从左边界到标签#1的前导空格是常量
  • 从Label#2到右边界的尾随空格是常量
  • 标签#1和标签#2之间的水平间距为常量

这些是我得到的警告:模糊布局组

  • Main.storyboard:警告:模糊布局:“标签#2”的垂直位置不明确。 (1)
  • Main.storyboard 2视图水平模糊。
  • Main.storyboard Width对于“Label#1”是不明确的。 (2)
  • Main.storyboard“标签#2”的宽度和水平位置不明确。 (2) Main.storyboard:警告:模糊布局:“标签#1”的垂直位置不明确。 (1)

我的想法:

  1. 垂直位置不应含糊不清。如果我没有将它设置为垂直居中,则我的设备上显示错误。
  2. 我没有设置宽度约束。我甚至没有看到IB中有任何宽度限制要删除。

1 个答案:

答案 0 :(得分:2)

如果要以编程方式添加约束(例如SnapKit),则仅使用自动布局库。

有一件事需要记住,在iOS中有新人,视图应该有WidthHeightXY

现在,使用界面构建器执行您想要的操作非常简单。在Storyboard或Xib中进行布局时,如果您的布局不正确,应该会出现警告或错误。

您需要以下内容,看看是否已实施:

  • 标签#1垂直居中于superView(单元格)✅
  • 标签#2垂直居中于superView(单元格)✅
  • 从左边界到标签#1的前导空格是常数✅
  • 从Label#2到右边界的尾随空格是常量✅
  • 标签#1和标签#2之间的水平间距为常数✅

正如您在我的约束中所看到的,有5个。

  1. 从superView到标签1的前导距离。
  2. 将Y居中到标签1的单元格。
  3. 将Y居中到标签2的单元格。
  4. 从superView到标签2尾随的尾随距离。
  5. 标签1与标签2的距离
  6. 最后,如果没有#6,您应该收到错误或警告。

    1. 两个视图中的一个(标签)应该具有恒定的宽度,我可以根据您的要求将恒定宽度放在标签2上。
    2. 关于你的问题:

        

      autolayout是否会添加我无法移除的宽度限制?

      不,除非您通过修改界面构建器中的警告/错误自动添加它。

      希望它有所帮助。

      enter image description here