Swift,自动版式和堆栈视图麻烦

时间:2018-11-10 05:52:08

标签: swift autolayout storyboard stackview

我一直在开发带有按钮网格的应用程序。网格每行包含4个按钮,(当前)包含6行。在情节提要中,每行按钮都在水平堆栈视图中,所有6个堆栈视图在垂直堆栈视图中。

我不希望所有按钮一直都可见,所以我用.isHidden打开和关闭它们。当我在模拟器中运行应用程序时,这会引起一些问题:

  1. 我希望所有按钮都保持相同大小,但是如果隐藏了给定行/堆栈视图中的一个或多个按钮,则该行中的其余按钮会调整其大小以填充该行。我猜想,将按钮上的约束和堆栈视图上的设置结合起来可以解决此问题,但是我还没有想到正确的组合。

  2. 例如,如果我开始时未隐藏按钮的前三行,然后尝试取消隐藏其他行中的一个按钮,则所有按钮中的 all 都会消失。但是,如果我“打印”每个按钮的.isHidden状态,则应该可见的按钮带有.isHidden = false

有解决任何一个问题的想法吗?

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要回答您的第一个问题...

当您将视图隐藏在UIStackView中时,自动布局将其视为“消失” ---堆栈视图将重新布局其arrangedSubviews,就好像该视图从未从那里开始。

如果您想要此结果:

enter image description here

您最好的选择是将该视图/按钮的.alpha属性设置为0。它将是完全不可见的(因此实际上是“隐藏”),并且堆栈视图将保留其当前布局。而且,带有.alpha = 0的控件不会响应触摸(因此您无法点击不可见的按钮)。

对于第二个问题,我建议您自己重新发布该问题。确保包括您使用的代码,但效果不理想。

请参阅:How to Ask