StackView 在 Button 被隐藏时为 Button 上浆
Posted
技术标签:
【中文标题】StackView 在 Button 被隐藏时为 Button 上浆【英文标题】:StackView starches ButtonA when ButtonB is hidden 【发布时间】:2018-07-01 11:30:08 【问题描述】:我有一个带有 2 个按钮的堆栈视图。
当 ButtonA 被隐藏时,buttonB 被拉伸。
我希望按钮 B 的宽度与指定的宽度相同。如何正确设置 UIStuckView。 这是我现在正在做的设置:
【问题讨论】:
你的堆栈视图有什么限制吗? 如果你只有这两个按钮,那么设置不会太复杂,只使用堆栈视图。另一种方法是,您可以将这两个按钮放在UIView
中,并为它们设置固定宽度约束。
@luda :默认情况下,StackView 根据其中的内容采用隐式大小。由于 UIButton 的大小基于标题或图像集(当然,除非被约束覆盖)StackView 不会拉伸其中的内容。你必须对stackView有宽度限制。如果是,请使用这些信息更新您的问题。最后,当 B 被隐藏时,您将其框架设置为 CGSize.zero 或将其从 superView 中删除是什么意思,因为简单地隐藏按钮不会将其从 stackView 中删除
【参考方案1】:
您可以做的第一件事是在按钮 B 上设置约束
buttonB.widthAnchor.constraint(equalToConstant: 50).isActive = true
或者您可以将按钮放在另一个视图中,然后在按钮和外部视图之间设置前导和尾随约束,以确保按钮不超过所需的宽度。
【讨论】:
【参考方案2】:您可以将这些按钮放在 containerView 中,并为按钮设置固定宽度和高度,这样只有 ContainerView 会调整它们的大小,而按钮只会调整它们的位置。以下可以让您了解此设置,
这里RedContainerView
有三个约束,zero
从left
、top
和bottom
到StackView
同样GreenContainerView
具有三个约束,zero
来自right
、top
和bottom
A button
是 center
vertically
和 horizontally
到 RedContainerView
修复 width
和高度为 40。
同样,B button
是 center
vertically
和 horizontally
到 GreenContainerView
,固定 width
和高度为 40。
现在,当两个 containerView 都可见时,你会得到这个,
当您将RedViewContainer's
isHidden
设置为true
时,GreenContainerView
将相应调整如下,
【讨论】:
以上是关于StackView 在 Button 被隐藏时为 Button 上浆的主要内容,如果未能解决你的问题,请参考以下文章
隐藏stackview中的第一个子视图和其他在iOS 10.2上消失但不是11