autolayout 是否添加了我无法删除的宽度限制?

Does autolayout add width constraints that I can't remove?

每当我为 iOS 写作时,我总是与 Autolayout 作斗争。还有其他人有这些问题吗?你如何克服它?您是否已恢复使用 SnapKit 等替代品?

这就是我想要完成的:

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

我想要以下内容:

这些是我收到的警告:不明确的布局组

我的想法:

  1. 垂直位置不能有歧义。如果我不设置它垂直居中,它在我的设备上显示错误。
  2. 我没有设置宽度限制。我什至没有在 IB 中看到任何要删除的宽度限制。

如果您想以编程方式添加约束,则只能使用自动布局库,例如 SnapKit

iOS 的新手要记住一件事,一个视图应该有 WidthHeightXY

现在,使用界面生成器做您想做的事非常容易。当您在 Storyboard 或 Xib 中进行布局时,如果布局不正确,应该会出现警告或错误。

您想要以下内容,看看是否已实现:

  • 标签 #1 垂直居中于 superView(单元格)✅
  • 标签 #2 垂直居中于 superView(单元格)✅
  • 从左边到 Label #1 的前导 space 保持不变 ✅
  • 从标签 #2 到右边边界的尾部 space 是常量 ✅
  • Label #1 和 Label #2 之间的水平间距保持不变 ✅

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

  1. 从 superView 到标签 1 的前导距离。
  2. Y 以标签 1 的单元格为中心。
  3. 以标签 2 的单元格为中心 Y。
  4. 从 superView 到标签 2 尾部的尾部距离。
  5. 标签 1 到标签 2 的距离

最后,如果没有这个 #6,您应该会收到错误或警告。

  1. 两个视图(标签)之一应该具有恒定宽度,我根据您的要求将恒定宽度放在标签 2 上。

关于你的问题:

Does autolayout add width constraints that I can't remove?

不,除非您通过修复界面生成器中的 warnings/errors 自动添加它。

希望对您有所帮助。