autolayout 是否添加了我无法删除的宽度限制?
Does autolayout add width constraints that I can't remove?
每当我为 iOS 写作时,我总是与 Autolayout 作斗争。还有其他人有这些问题吗?你如何克服它?您是否已恢复使用 SnapKit 等替代品?
这就是我想要完成的:
UITableViewCell
+-------------------------------------+
| +-------------------------+ +-----+ |
| | Label #1 | | #2 | |
| +-------------------------+ +-----+ |
+-------------------------------------+
我想要以下内容:
- 标签 #1 垂直居中
- 标签 #2 垂直居中
- 从左边到标签 #1 的前导 space 保持不变
- 从标签 #2 到右边界的尾部 space 为常量
- Label #1 和 Label #2 之间的水平间距保持不变
这些是我收到的警告:不明确的布局组
- Main.storyboard:警告:布局不明确:"Label #2" 的垂直位置不明确。 (1)
- Main.storyboard 2个视图水平方向不明确
- Main.storyboard "Label #1" 的宽度不明确。 (2)
- Main.storyboard "Label #2" 的宽度和水平位置不明确。 (2)
Main.storyboard:警告:布局不明确:"Label #1" 的垂直位置不明确。 (1)
我的想法:
- 垂直位置不能有歧义。如果我不设置它垂直居中,它在我的设备上显示错误。
- 我没有设置宽度限制。我什至没有在 IB 中看到任何要删除的宽度限制。
如果您想以编程方式添加约束,则只能使用自动布局库,例如 SnapKit
。
iOS 的新手要记住一件事,一个视图应该有 Width
、Height
、X
和 Y
。
现在,使用界面生成器做您想做的事非常容易。当您在 Storyboard 或 Xib 中进行布局时,如果布局不正确,应该会出现警告或错误。
您想要以下内容,看看是否已实现:
- 标签 #1 垂直居中于 superView(单元格)✅
- 标签 #2 垂直居中于 superView(单元格)✅
- 从左边到 Label #1 的前导 space 保持不变 ✅
- 从标签 #2 到右边边界的尾部 space 是常量 ✅
- Label #1 和 Label #2 之间的水平间距保持不变 ✅
正如您在我的约束中看到的那样,有 5 个。
- 从 superView 到标签 1 的前导距离。
- Y 以标签 1 的单元格为中心。
- 以标签 2 的单元格为中心 Y。
- 从 superView 到标签 2 尾部的尾部距离。
- 标签 1 到标签 2 的距离
最后,如果没有这个 #6,您应该会收到错误或警告。
- 两个视图(标签)之一应该具有恒定宽度,我根据您的要求将恒定宽度放在标签 2 上。
关于你的问题:
Does autolayout add width constraints that I can't remove?
不,除非您通过修复界面生成器中的 warnings/errors 自动添加它。
希望对您有所帮助。
每当我为 iOS 写作时,我总是与 Autolayout 作斗争。还有其他人有这些问题吗?你如何克服它?您是否已恢复使用 SnapKit 等替代品?
这就是我想要完成的:
UITableViewCell
+-------------------------------------+
| +-------------------------+ +-----+ |
| | Label #1 | | #2 | |
| +-------------------------+ +-----+ |
+-------------------------------------+
我想要以下内容:
- 标签 #1 垂直居中
- 标签 #2 垂直居中
- 从左边到标签 #1 的前导 space 保持不变
- 从标签 #2 到右边界的尾部 space 为常量
- Label #1 和 Label #2 之间的水平间距保持不变
这些是我收到的警告:不明确的布局组
- Main.storyboard:警告:布局不明确:"Label #2" 的垂直位置不明确。 (1)
- Main.storyboard 2个视图水平方向不明确
- Main.storyboard "Label #1" 的宽度不明确。 (2)
- Main.storyboard "Label #2" 的宽度和水平位置不明确。 (2) Main.storyboard:警告:布局不明确:"Label #1" 的垂直位置不明确。 (1)
我的想法:
- 垂直位置不能有歧义。如果我不设置它垂直居中,它在我的设备上显示错误。
- 我没有设置宽度限制。我什至没有在 IB 中看到任何要删除的宽度限制。
如果您想以编程方式添加约束,则只能使用自动布局库,例如 SnapKit
。
iOS 的新手要记住一件事,一个视图应该有 Width
、Height
、X
和 Y
。
现在,使用界面生成器做您想做的事非常容易。当您在 Storyboard 或 Xib 中进行布局时,如果布局不正确,应该会出现警告或错误。
您想要以下内容,看看是否已实现:
- 标签 #1 垂直居中于 superView(单元格)✅
- 标签 #2 垂直居中于 superView(单元格)✅
- 从左边到 Label #1 的前导 space 保持不变 ✅
- 从标签 #2 到右边边界的尾部 space 是常量 ✅
- Label #1 和 Label #2 之间的水平间距保持不变 ✅
正如您在我的约束中看到的那样,有 5 个。
- 从 superView 到标签 1 的前导距离。
- Y 以标签 1 的单元格为中心。
- 以标签 2 的单元格为中心 Y。
- 从 superView 到标签 2 尾部的尾部距离。
- 标签 1 到标签 2 的距离
最后,如果没有这个 #6,您应该会收到错误或警告。
- 两个视图(标签)之一应该具有恒定宽度,我根据您的要求将恒定宽度放在标签 2 上。
关于你的问题:
Does autolayout add width constraints that I can't remove?
不,除非您通过修复界面生成器中的 warnings/errors 自动添加它。
希望对您有所帮助。