【问题标题】:Adjusting UIView Height Inside UIStackView Control在 UIStackView 控件内调整 UIView 高度
【发布时间】:2015-12-15 20:59:35
【问题描述】:

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

【问题讨论】:

  • 您能解释一下为什么在这种情况下需要使用堆栈视图吗?看起来你有一个非常基本的设置。你希望完成什么?

标签: ios swift uistackview


【解决方案1】:

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

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

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

Stackview 在以下情况下最有用

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

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

在原型单元之外

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

然后在stackview上设置约束:

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

【讨论】:

  • 不幸的是,当我把 20 点的宽度和高度放在一边时,高度被完全忽略了,因为它占用了 UIStackView 控件的高度。
  • 我什至试图完全删除 UIStackView 但后来我遇到了一些我不知道这意味着什么的限制。 greenview 从不显示。
  • 谢谢!我删除了 UIStackView 并手动添加了约束,现在它可以工作了!
  • 感谢您谈论堆栈视图的用处。
【解决方案2】:
  1. 首先您需要在cell 上添加UIStackView

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

  3. 调整您的UIStackView

  4. UILabel拖放到您的UIStackView

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

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

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

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

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

【讨论】:

  • 感谢您提供详细的屏幕截图!不幸的是,当我将 UIView 放在 UIStackView 中时,它会占用 UIStackView 的高度。我尝试拖动并更改 UIView 的高度,但它总是重置回 UIStackView 的高度。
  • 等一下!您为该绿色视图添加了一个非常小的堆栈视图。如果我使用多个堆栈视图,我还需要在 UIStackView 中添加 UILabel。
  • 谢谢!我删除了 UIStackView 并手动添加了约束,现在它可以工作了!
  • 我能说这是用绿色的 UIView 遮住了粉色的 UIView 吗?
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多