在 UIStackView 控件中调整 UIView 高度

Adjusting UIView Height Inside UIStackView Control

我在 iOS 9 SDK 中使用 UIStackView。 stackview 的高度是 44 点。我在 StackView 中有一个 UILabel 和 UIView,如下所示:

现在,我想让绿色视图比 44.. 小得多。很像 20。我该怎么做?

没有 UIStackView,我正在打破约束:

[GT.BubbleView:0x14536610]   (Names: '|':UITableViewCellContentView:0x14536fd0 )>",
    "<NSLayoutConstraint:0x146b7300 GT.BubbleView:0x14536610.trailing == UITableViewCellContentView:0x14536fd0.trailingMargin>",
    "<NSLayoutConstraint:0x146c4000 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x14536fd0(286)]>")

如果您想要获得如下所示的 20x20 正方形:

然后您所要做的就是将另一个 UIView 添加到您的绿色视图中。使 UIView 的大小为 20x20pts。然后将小视图背景更改为绿色,将大视图背景更改为透明。

也就是说,此解决方案不需要堆栈视图,并且可能会使您的 UI 过于复杂。我建议只使用自动布局。

堆栈视图在

时最有用
  1. 您想补偿设备方向的变化,
  2. 想把很多东西叠起来,
  3. 想要创建一个包含很多元素的非常复杂的布局,但是 您可以重复的模式,或
  4. 只是希望能够删除一个元素或添加一个元素,并自行调整大小

该列表并不详尽,但应该让您了解何时以及为何使用堆栈视图。

原型单元格外

这种行为是微不足道的。您可以简单地在视图上设置约束: '

然后在stackview上设置约束:

希望对您有所帮助,干杯!

  1. 首先你需要在 cell 上添加 UIStackView

  2. 需要为您的 UIStackView 添加约束

  3. 调整你的UIStackView

  4. 拖放 UILabel 到您的 UIStackView

  5. 然后将 UIView 拖放到您的 UIStackView

  6. 添加 green-UIView 喜欢的子视图到 pink UIView

  7. 现在您可以向 green-UIView 添加几个约束

  8. 现在您可以在模拟器或设备上 运行 应用

    注意我没有为UILabel添加任何约束。

将宽高约束的优先级设置为800或以上即可轻松解决打破约束的问题。

我想 post 我的回答在这里,以便其他人可以看到,尽管与 OP 的问题略有不同。

我正在尝试调整包含 UIStackView 的 UIView 的大小,但限制已被打破。我正在将 UIView 的高度限制更改为 0 到 66,具体取决于是否有相关信息显示堆栈视图正在显示。

我能够通过删除视图内堆栈视图的顶部和底部约束来修复中断约束,并将其设置为垂直居中。这使我的 table 视图滚动更加顺畅。