我是 iOS 开发的新手,所以很自然地,我在 Xcode 中的堆栈视图和自动布局约束方面遇到了一些问题。最初我只使用约束和 pin 菜单来对齐所有内容,但我真的想降低堆栈视图,所以我回去实现它们。
如果您查看我上面的图片,您会发现在我的应用程序中我创建了几个堆栈视图:
- 状态栏垂直堆栈
- 第1节垂直堆栈
- 第一个分隔线(它只是一个高度为 0.5 且不在堆栈内的视图)
- 第 2 部分,其中包含主垂直堆栈视图内的 2 个水平堆栈
- 第二个分隔线(与第 2 节和第 3 节之间的第一个分隔线完全相同)
- 第 3 节包含一个垂直堆栈和主垂直堆栈内部的水平堆栈
所有这些堆栈加上 2 个分隔符都组合在一个称为用户界面的超垂直堆栈中。
我的问题之一是我无法在堆栈和分隔符之间设置顶部和底部约束。就目前而言,部分和分隔线之间有太多我喜欢的空间。如果您查看图像 1,我尝试在第 1 节和状态栏之间设置 15 的顶部约束。我还尝试在我的第一个分隔线和第 1 节之间设置 15 的顶部约束,依此类推。我遇到了相互矛盾的约束,我只是不知道为什么。他们所说的只是Section1.top = Status Bar.bottom + 15
,1st Divider.top = Section1.bottom + 15
等等。关于如何解决冲突的任何想法?每次我尝试移动分隔线时,它都会弹回原来的位置,调整约束数字会给我同样的错误。
我的第二个问题是我无法让用户界面适合它的超级视图。我希望我的应用程序适合所有 iPhone 屏幕尺寸并相应地自动调整。我尝试做的是使用 pin 菜单并将用户界面堆栈的每一侧固定为 0 约束(未选中约束到边距)。用户界面是对齐的,没有任何冲突,但是我的所有堆栈都被压扁,如图 2 所示。这导致了一些错误,表明我的标签的某些高度和垂直位置不明确:
Height and vertical position are ambiguous for "Bill Amount Text Field".
Height is ambiguous for "BILL AMOUNT".
Height and vertical position are ambiguous for "Tip Percent Segment Control".
当您缩小屏幕尺寸时,会出现更多错误,因为更多标签被压扁。我已经为每个标签设置了单独的顶部和底部约束。即使我为每个标签设置了一个高度,错误消息也会消失,但并不是我的所有标签都出现在它们的堆栈中。我尝试弄乱对齐和分布菜单并为我的堆栈选择不同的菜单,但它们似乎都没有解决问题。
任何帮助将不胜感激,或者如果我要解决这一切都错了,请告诉我。我正在使用 Xcode 8 beta 4 并在 Swift 3.0 中编写了应用程序。