我在自动布局方面遇到了一些问题。我正在制作一个练习应用程序并且我已经构建了这个显示来配置用户单位设置,但我正在努力设置约束。这就是我希望它看起来......
但这是我在不同的设备(iPhone 5)上运行时得到的......
这些是我使用的限制因素:
(单位) - 将中心X与Superview对齐,宽度等于:91,底部空间为:重量,顶部空间到顶部布局指南:31
(重量) - 将中心X与Superview对齐,宽度等于:69,BottomSpace到weightSegment:13,顶部空间到单位:22
(WeightSegment) - 将中心X对齐Superview,宽度等于:260,底部空间距离:23,顶部空间到重量:13
(距离) - 将中心x与Superview对齐,顶部空间与权重段对齐:23,底部空间到距离段:13
(DistanceSegment) - 将中心X对齐Superview,宽度等于:260,底部空间到高度:23,距离顶部空间:13
(高度) - 将中心x与Superview对齐,顶部空间与距离段对齐:23,底部空间到高度段:13
(高度分段) - 将中心X对齐到Superview,宽度等于:260,底部空间到比例:23,顶部空间到高度:13
(比例) - 将中心x与Superview对齐,顶部空间与高度线段对齐:23,底部空间到ScaleSegment网段:13
(ScaleSegment) - 将中心X与Superview对齐,宽度等于:260,缩放的顶部空间:13
(完成) - 将中心X与Superview对齐,宽度等于:295,高度等于:53,底部空间到BottomLayoutGuide:67。
答案 0 :(得分:1)
调试它,看起来你的水平约束是好的,所以让我们删除所有的中心X对齐和宽度。这留下了垂直约束。我的直觉立刻想到了什么,似乎是问题所在。你已经限制了从上到下的所有内容......单位,重量,重量分段等除了一个 - 完成按钮。您有三种选择:
<强>最简单的:强>
通过对齐ScaleSegment的顶部和底部来重做完成按钮上的约束。这里的问题是在大型设备上,底部会有大量的“空白区域”。不过,这比......更好。
计划B:
保持完成按钮约束并重做其他控件,从下向上工作(将它们的底部对齐到最后包含的控件的顶部)。我个人不喜欢这个,因为它有更多的变化,你仍然仍然在大型设备上拥有“空白区域”,除了它现在位于顶部。但是有更好的选择。尽管这些选项中的任何一个都有更多的工作......
最佳选择:
使用layoutGuides。请注意,我只知道如何在代码中执行它们。它们可能不适用于IB!但是如果在每个“set”元素(UILabel和UISegmentedControl)之间插入layoutGuide,然后使它们的垂直高度彼此相等,那么您可以控制精确所需的间距。顶部和底部,让自动布局决定剩下多少相等的垂直间距,具体取决于设备尺寸。
当然,如果您使用IB并且layoutGuides不可用,请使用最简单的选项。