我一直在开发一个带有按钮网格的应用程序。该网格每行包含 4 个按钮,(当前)有 6 行。在 Storyboard中,每行按钮都位于水平堆栈 View 中,所有 6 个堆栈 View 都位于垂直堆栈 View 中。
我不希望所有按钮始终可见,因此我使用 .isHidden
打开和关闭它们。当我在模拟器中运行应用程序时,这会导致一些问题:
我希望所有按钮保持相同的大小,但如果给定行/堆栈 View 中的一个或多个按钮被隐藏,则该行中的其余按钮会调整其大小以填充该行。我猜对按钮的约束和堆栈 View 上的设置的组合可以解决这个问题,但我还没有想出正确的组合。
如果我从前 3 行按钮全部取消隐藏开始,然后尝试取消隐藏其他行中的按钮,所有按钮都会消失。但是,如果我“打印”每个按钮的
.isHidden
状态,则应该可见的按钮具有.isHidden = false
。
有什么想法可以解决这些问题吗?
预先感谢您的帮助。
最佳答案
回答你的第一个问题...
当您隐藏 UIStackView
中的 View 时,自动布局会将其视为“消失”——堆栈 View 将重新布局其 arrangedSubviews
就好像这个 View 从一开始就不存在一样。
如果你想要这个结果:
您最好的选择可能是将该 View /按钮的 .alpha
属性设置为 0
。它将完全不可见(因此,实际上是“隐藏”),并且堆栈 View 将保留其当前布局。而且,.alpha = 0
的控件不会响应触摸(因此您无法点击不可见的按钮)。
对于您的第二个问题,我建议您单独重新发布该问题。确保包含您正在使用的未达到预期结果的代码。
参见:How to Ask
关于swift - Swift、自动布局和堆栈 View 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53236358/