20

我在 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)]>")
4

4 回答 4

24
  1. UIStackView首先,您需要添加cell 在此处输入图像描述

  2. 需要添加约束到您的UIStackView 在此处输入图像描述

  3. 调整你的UIStackView 在此处输入图像描述

  4. 拖放UILabel到您的UIStackView 在此处输入图像描述

  5. 然后拖放UIView到您的UIStackView 在此处输入图像描述

  6. 添加green-UIView喜欢的子视图pink UIView 在此处输入图像描述

  7. 现在您可以添加几个约束green-UIView 在此处输入图像描述 在此处输入图像描述

  8. 现在您可以在模拟器或设备上运行应用程序 在此处输入图像描述 在此处输入图像描述

    请注意,我没有为UILabel.

于 2015-09-23T07:42:52.727 回答
17

如果您尝试实现如下所示的 20x20 正方形:

在此处输入图像描述

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

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

Stackviews 在以下情况下最有用

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

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

在原型单元之外

这种行为是微不足道的。您可以简单地在视图上设置约束: 在此处输入图像描述'

然后在stackview上设置约束: 在此处输入图像描述

希望这会有所帮助,干杯!

于 2015-09-22T12:43:17.610 回答
1

通过将宽度和高度约束的优先级设置为 800 或更高,可以轻松解决破坏约束问题。

于 2016-01-14T05:24:48.917 回答
0

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

我试图调整包含 UIStackView 的 UIView 并且约束被打破。我将 UIView 的高度约束更改为 0 到 66,具体取决于是否有相关信息显示堆栈视图正在显示。

我能够通过删除视图内堆栈视图的顶部和底部约束来修复破坏性约束,而是将其设置为垂直居中。这导致在我的表格视图中滚动更加顺畅。

于 2018-08-21T14:31:49.807 回答