gpt4 book ai didi

ios - 自动布局如何在具有 3 个等宽 View 的 View 中隐藏 1 个 View

转载 作者:搜寻专家 更新时间:2023-10-30 22:07:26 27 4
gpt4 key购买 nike

目前我在 1 个 View 中有 3 个 View (固定到 super View 的前缘和后缘)。

当前的 3 个 View 如下所示:

3 views with equal widths

然而,在某些情况下,我希望隐藏靛蓝 View ,但仍然保持最后 2 个相同的宽度,如下所示: 2 views with equal widths with indigo view hiding

如何使用自动布局实现这一点?或者我如何使用 IBOutlets 进行约束来实现这一点?

最佳答案

如果部署目标是iOS9或更高版本,建议使用UIStackView作为封闭 View 。在 UIStackView 中排列的任何 View 上将 isHidden 设置为 true 不仅会使 View 隐藏,而且堆栈 View 也会重新组织所有非隐藏 View 填充隐藏 View 占用的空间。可以通过调整 UIStackView 上的 distribution 来调整此行为。


Tj3n 的答案有效,但它有一个缺点,即您必须在代码中使用魔数(Magic Number)并在代码和 IB 中都设置约束属性。

恕我直言,更好的解决方案是在 IB 中设置具有不同优先级的所有约束并在代码中激活/停用它们。试试这个:

  1. 像以前一样设置前导/尾随约束。
  2. 为优先级 high 的所有三个 View 设置等宽约束。
  3. 为优先级为 required 的所有三个 View 设置 0 宽度约束,但在 IB 中将它们停用。并在代码中将它们连接到 IBOutlet,就像连接 View 一样。
  4. 激活任何 0 宽度约束以折叠您想要的 View ,然后停用它们以展开。

请注意,只需使用 1 和 2,就可以实现等宽 View 布局。使用 3 和 4,您可以有选择地折叠/展开任何 View 。

关于ios - 自动布局如何在具有 3 个等宽 View 的 View 中隐藏 1 个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38364555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com