【问题标题】:Problems when trying to hide a UIStackView's subview尝试隐藏 UIStackView 的子视图时出现问题
【发布时间】:2018-12-16 23:26:20
【问题描述】:

我有以下视图树:

堆栈视图
- 轴:垂直
- 对齐:填充
- 分布:填充
- 间距:0
- 约束:
- - - 尾随空格:Superview
- - - 前导空格:Superview
- - - 顶部空间到:Superview
- - - 子视图:
- - - - - UIView(名称:VIEW_ONE
- - - - - - - 约束:
- - - - - - - - 身高:60
- - - - - - - 子视图:
- - - - - - - - UIView(名称:VIEW_TWO
- - - - - - - - - - - 约束:
- - - - - - - - - - - - 将 Y 中心对齐到:Superview
- - - - - - - - - - - - 尾随空格至:Superview
- - - - - - - - - - - - 前导空格:Superview
- - - - - - - - - - - - 高度:20

obs:StackView 位于占据整个屏幕的 UIView 内

在我尝试将 VIEW_ONE 的隐藏状态设置为 true 之前,一切正常。 Xcode UI 开始抱怨 VIEW_TWO:
- 需要约束:Y 位置或高度;
- 需要约束:X 位置或宽度。

为什么会这样?我尝试了很多方法来解决这个问题,但没有任何结果=/


【问题讨论】:

  • 你能展示一下设计吗?
  • @iPeter,我刚刚更新了帖子:)
  • 您的stackView 只包含一个子视图,那您为什么还要使用stackView。如我所见,您的第二个视图是您的第一个视图的子视图。
  • 我的 stackView 实际上包含很多子视图。但我可以简化我必须解决的问题。我认为使用它作为示例会更简单。
  • 看,如果你只有一个视图那么不需要将它嵌入到stackView中,你可以通过添加约束来简单地设置它的位置。但是,如果您有多个视图,并且需要将它们全部放置到某个位置并有一些间距,那么您应该使用stackView

标签: ios autolayout uistackview


【解决方案1】:

当您将视图隐藏在 stackView 中时,这意味着您从 stackView 逻辑中将其删除,因此它使 stackView 的宽度和高度不明确,而不是将 hidden 设置为 true ,您可以使高度约束的常量 = 0 ,与设置clipsToBounds = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2017-05-31
    • 1970-01-01
    • 2021-06-01
    • 2018-03-01
    • 2019-05-31
    相关资源
    最近更新 更多