为什么带有 UILabels 的嵌套 UIStackView 需要 Y 位置和高度约束?

Pet*_*ter 3 xcode ios autolayout swift uistackview

我正在尝试解决我们在UITableViewCell. 有UIStackView带有子视图的嵌套,例如UILabel具有内在的内容大小。我创建这个示例是为了简化解释我的问题:

示例故事板的屏幕截图

导致这些界面生成器错误:

Top Stack 
View Need constraints for: Y position, height
Middle Stack 
View Need constraints for: Y position, height
Bottom Stack 
View Need constraints for: Y position, height
Run Code Online (Sandbox Code Playgroud)
  • 据我(和我的同事)的理解,堆栈和表视图单元格大小应由UILabels 及其内在内容大小决定。
  • “外部堆栈视图”对其超级视图(“表视图单元格”)有四个空间约束,其中 0 作为常量,因为最终表视图单元格和所有堆栈视图大小应基于内容视图。
  • 所有这些都UIStackView具有Fill对齐和分布属性。
  • 我只是将它从库中拖到一起,如图所示,没有在检查器中摆弄。复制起来很简单。
  • 向标签添加相对于其父堆栈视图的 0 空间顶部和底部约束并不能解决据称缺少高度约束的堆栈视图的问题。
  • 接口构建器建议的约束是无稽之谈。

缺什么?我创建了一个托管在 GitHub 上的示例项目

jav*_*ola 5

您必须将OutterStackView底部约束设置为greater than or equal单元格内容视图的底部。

在此输入图像描述

在此输入图像描述

看到的问题是,您要求OutterStackView与 StoryBoard 中的单元格大小相同,但由于您的内部标签还没有最终的内在内容大小,因此您无法满足所有约束要求。