【问题标题】:StackView starches ButtonA when ButtonB is hiddenStackView 在 Button 被隐藏时为 Button 上浆
【发布时间】:2018-07-01 11:30:08
【问题描述】:

我有一个带有 2 个按钮的堆栈视图。

当 ButtonA 被隐藏时,buttonB 被拉伸。

我希望按钮 B 的宽度与指定的宽度相同。如何正确设置 UIStuckView。 这是我现在正在做的设置:

【问题讨论】:

  • 你的堆栈视图有什么限制吗?
  • 如果你只有这两个按钮,那么设置不会太复杂,只使用堆栈视图。另一种方法是,您可以将这两个按钮放在UIView 中,并为它们设置固定宽度约束。
  • @luda :默认情况下,StackView 根据其中的内容采用隐式大小。由于 UIButton 的大小基于标题或图像集(当然,除非被约束覆盖)StackView 不会拉伸其中的内容。你必须对stackView有宽度限制。如果是,请使用这些信息更新您的问题。最后,当 B 被隐藏时,您将其框架设置为 CGSize.zero 或将其从 superView 中删除是什么意思,因为简单地隐藏按钮不会将其从 stackView 中删除

标签: ios autolayout uistackview


【解决方案1】:

您可以做的第一件事是在按钮 B 上设置约束

buttonB.widthAnchor.constraint(equalToConstant: 50).isActive = true

或者您可以将按钮放在另一个视图中,然后在按钮和外部视图之间设置前导和尾随约束,以确保按钮不超过所需的宽度。

【讨论】:

    【解决方案2】:

    您可以将这些按钮放在 containerView 中,并为按钮设置固定宽度和高度,这样只有 ContainerView 会调整它们的大小,而按钮只会调整它们的位置。以下可以让您了解此设置,

    这里RedContainerView有三个约束,zerolefttopbottomStackView

    同样GreenContainerView 具有三个约束,zero 来自righttopbottom

    A buttoncenter verticallyhorizontallyRedContainerView 修复 width 和高度为 40。

    同样,B buttoncenter verticallyhorizontallyGreenContainerView,固定 width 和高度为 40。

    现在,当两个 containerView 都可见时,你会得到这个,

    当您将RedViewContainer's isHidden 设置为true 时,GreenContainerView 将相应调整如下,

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      相关资源
      最近更新 更多