首页 > 解决方案 > 隐藏某些按钮时,Swift自动布局会更改按钮位置

问题描述

我有自定义,UICollectionViewCell因为TaskCell我添加了 4 个按钮。所有按钮都是使用自动布局以编程方式添加的。

现在,当我隐藏一些按钮时,我希望其他剩余的按钮代替隐藏的按钮。检查以下图像。

在此处输入图像描述

在这里,您可以看到使用 trailingAnchors 对齐到右侧的 4 个按钮。现在,如果我隐藏最后两个按钮,即评级和删除,那么我希望剩余的两个按钮向右移动并取代评级和删除按钮。

下图显示当我隐藏评级和删除按钮时其他按钮保持在同一位置。

最好的方法是什么?

我知道我们必须存储 trailingAnchors 并根据我们的条件设置它的活动属性的一种方式。

喜欢以下

在此处输入图像描述

var deleteTrailingAnchor: NSLayoutConstraint?

deleteTrailingAnchor = deleteButton.trailingAnchor.constraint(equalTo: buttonContainer.trailingAnchor, constant: -8)

 deleteTrailingAnchor?.isActive = true

现在我们必须deleteTrailingAnchor根据需要进行管理。

有没有更好的方法来解决这个问题AutoLayouts

谢谢你的帮助。

标签: iosiphoneswiftios-autolayout

解决方案


UIStackView会做你想做的。

给它顶部、底部和尾随约束,但不是宽度约束。

当您添加/删除排列的子视图时,它将在单元格中保持“右对齐”。

在这里,我有 4 个 UIImageViews “a” “b” “c” 和 “d”。图像视图的宽度约束为 30,纵横比约束为 1:1。

首先,所有 4 个图像视图都在堆栈视图中:

在此处输入图像描述

接下来,我删除了“c”:

在此处输入图像描述

现在,我删除了“a”和“c”:

在此处输入图像描述

如您所见,堆栈视图为您处理图像视图的放置。


推荐阅读