UIStackView 内部的视图未使用 AutoLayout 调整大小

View inside UIStackView is not resizing with AutoLayout

我有以下屏幕:

所有视图都在 UIStackView 内。黄色视图将在 运行 时间循环显示。当我 运行 一个较小的 iPhone (5S) 时,我的问题是,包含 yellow viewlight blue 视图不会变小,所以 red and blue view 来自底部会收缩。我希望这两个和 green view 具有固定宽度和 light blue view 以适应高度。

但出于某种原因,它没有。我确定是因为我设置为 yellow view 的约束。但是我不知道是哪一个有问题。

以下是 yellow view 限制条件:

其他视图的约束是:

  1. 绿景:高度=64
  2. 红色和蓝色视图:高度 = 50

如果有人能花一些时间查看这些限制并帮助我了解如何在屏幕变化时使浅蓝色(和黄色)改变高度,我将不胜感激。

您是否尝试将浅蓝色和黄色视图的内容压缩阻力优先级(垂直)降低到低于 750,并将绿色、红色和蓝色视图的内容压缩阻力优先级(垂直)降低到更高超过 750(如果是这样的话,甚至可能需要 1000?)

更新

我看了你的项目。实际上,问题似乎根本不在于您的堆栈视图、约束或 DailyStatusViewController。相反,该问题看起来与 MainViewController 更相关,后者将每日状态视图嵌入到滚动视图中。滚动视图既剪裁到边界,又放置在另一个容器视图后面。如果您关闭滚动视图上的边界剪辑,并将其下方的容器视图移动到后面,您将看到您的堆栈视图布局正确,但只是被裁剪了。

至于它们被剪裁的原因,请记住,您的输出堆栈视图的高度限制为 300,而嵌入它的滚动视图的高度限制为屏幕高度的 45%。所以在较小的屏幕上,只有不到 300 个点可用于显示每日状态视图,因此它被裁剪了。您可能想从外部堆栈视图中删除固定高度约束,而是将其限制在根视图的边缘。