Swift、自动布局和堆栈视图的问题

问题描述 投票:0回答:1

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

我不希望所有按钮始终可见,因此我使用

.isHidden
打开和关闭它们。当我在模拟器中运行应用程序时,这会导致一些问题:

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

  2. 如果我从前 3 行按钮全部取消隐藏开始,然后尝试取消隐藏其他行中的按钮,所有按钮都会消失。但是,如果我“打印”每个按钮的

    .isHidden
    状态,则应该可见的按钮具有
    .isHidden = false

有解决这些问题的任何想法吗?

swift autolayout storyboard stackview
1个回答
0
投票

回答你的第一个问题...

当您隐藏

UIStackView
中的视图时,自动布局会将其视为“消失”——堆栈视图将重新布局其
arrangedSubviews
,就好像该视图从一开始就不存在一样。

如果你想要这个结果:

您最好的选择可能是将该视图/按钮的

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

© www.soinside.com 2019 - 2024. All rights reserved.