3

我是 iOS 开发的新手,所以很自然地,我在 Xcode 中的堆栈视图和自动布局约束方面遇到了一些问题。最初我只使用约束和 pin 菜单来对齐所有内容,但我真的想降低堆栈视图,所以我回去实现它们。

应用界面

如果您查看我上面的图片,您会发现在我的应用程序中我创建了几个堆栈视图:

  • 状态栏垂直堆栈
  • 第1节垂直堆栈
  • 第一个分隔线(它只是一个高度为 0.5 且不在堆栈内的视图)
  • 第 2 部分,其中包含主垂直堆栈视图内的 2 个水平堆栈
  • 第二个分隔线(与第 2 节和第 3 节之间的第一个分隔线完全相同)
  • 第 3 节包含一个垂直堆栈和主垂直堆栈内部的水平堆栈

所有这些堆栈加上 2 个分隔符都组合在一个称为用户界面的超垂直堆栈中。

我的问题之一是我无法在堆栈和分隔符之间设置顶部和底部约束。就目前而言,部分和分隔线之间有太多我喜欢的空间。如果您查看图像 1,我尝试在第 1 节和状态栏之间设置 15 的顶部约束。我还尝试在我的第一个分隔线和第 1 节之间设置 15 的顶部约束,依此类推。我遇到了相互矛盾的约束,我只是不知道为什么。他们所说的只是Section1.top = Status Bar.bottom + 151st 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 中编写了应用程序。

4

2 回答 2

-2

请参阅本文档- 对所有自动布局概念都有非常清晰的解释。
我认为您的问题是您使用一个大堆栈视图,其中每个元素与其他元素成比例地填充。尝试解决这个问题。

一点建议,堆栈确实是个好东西,但你不应该滥用它:)

于 2016-08-12T20:53:00.390 回答
-5

TL;博士;

根据我的经验。停止使用 Interface Builder 并在代码中创建所有视图。使用新的锚系统或像SnapKit这样的框架非常容易。您获得的好处:

  • 更快的发展(经过一段时间的练习)
  • Interface Builder 没有愚蠢的警告
  • 在团队中工作时更容易合并
  • XCode 几乎从不崩溃

我和 IB 斗争了几个月,现在我非常高兴。祝你好运。

于 2016-08-12T04:58:03.647 回答