ios - 无法正确自动调整自动布局和堆栈 View (Swift 3、Xcode 8)

标签 ios swift xcode ios10 xcode8-beta4

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

App Interface

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

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

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

我的一个问题是我无法在我的堆栈和分隔线之间设置顶部和底部约束。就目前而言,部分和分隔线之间的空间太大,我不喜欢。如果您查看图像 1,我尝试在第 1 部分和状态栏之间设置 15 的顶部约束。我还尝试在第一个分隔线和第 1 节之间设置 15 的顶部约束,依此类推。我遇到了相互矛盾的约束,我只是想不通为什么。他们只说 Section1.top = Status Bar.bottom + 151st Divider.top = Section1.bottom + 15 等。 关于如何解决冲突的任何想法?每次我尝试移动分隔线时,它都会弹回到原来的位置,调整约束数字也会给我同样的错误。

我的第二个问题是我无法让用户界面适应它的 super View 。我希望我的应用适合所有 iPhone 屏幕尺寸并相应地自动调整。我尝试做的是使用固定菜单并固定用户界面堆栈的每一侧,约束为 0(约束为未选中的边距) .用户界面对齐且没有任何冲突,但随后我的所有堆栈都被压扁,如图 2 所示。这导致了一些错误,表明我的标签的某些高度和垂直位置不明确:

  • “账单金额文本字段”的高度和垂直位置不明确。
  • “BILL AMOUNT”的高度不明确。
  • “Tip Percent Segment Control”的高度和垂直位置不明确。

当您缩小屏幕尺寸时,会出现更多错误,因为更多标签被压扁了。我已经为每个标签设置了单独的顶部和底部约束。即使我为每个标签设置了高度,错误消息也会消失,但并不是我的所有标签都出现在它们的堆栈中。我试着弄乱对齐和分布菜单并为我的堆栈选择不同的菜单,但它们似乎都无法解决问题。

如有任何帮助,我们将不胜感激,如果我做错了,请告诉我。我正在使用 Xcode 8 beta 4 并使用 Swift 3.0 编写应用程序。

最佳答案

引用这个documentation - 所有自动布局概念都有非常清晰的解释。
我认为您的问题是您使用了一个大堆栈 View ,其中每个元素按比例填充到其他元素。尝试解决这个问题。

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

关于ios - 无法正确自动调整自动布局和堆栈 View (Swift 3、Xcode 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38910018/

相关文章:

ios - handleWatchKitExtensionRequest 不响应 Watchkit 扩展中的 openParentApplication (Swift)

ios - 如何在 iOS 版 MonoTouch/Xamarin 中导航命名空间?

iOS 向后兼容性 - 一个不存在的类的分配/初始化

ios - 不同的有效代码示例抛出相同的错误

ios - 给大标题导航栏添加一个按钮

ios - GenerationAssetSymbols 中的 Xcode 15 beta 错误

ios - Swift 初始化器之谜

ios - 导航栏比 View 消失得更快

xcode - 当尝试包含 "in a String, using\"时有效但\也包含在内

ios - setValue : or removeValue: 的 Firebase 权限被拒绝