【发布时间】:2019-02-28 21:24:31
【问题描述】:
我有自定义UICollectionViewCell 为TaskCell,我在其中添加了 4 个按钮。
所有按钮都是使用自动布局以编程方式添加的。
现在,当我隐藏一些按钮时,我希望其他剩余按钮代替隐藏按钮。检查以下图片。
在这里您可以看到使用 trailingAnchors 对齐到右侧的 4 个按钮。 现在,如果我隐藏最后两个按钮,即评级和删除,那么我希望剩下的两个按钮向右移动并取代评级和删除按钮。
下图显示,当我隐藏评分和删除按钮时,其他按钮仍保留在同一位置。
最好的方法是什么?
我知道一种方法,我们必须存储 trailingAnchors 并根据我们的条件设置它的活动属性。
喜欢关注
var deleteTrailingAnchor: NSLayoutConstraint?
deleteTrailingAnchor = deleteButton.trailingAnchor.constraint(equalTo: buttonContainer.trailingAnchor, constant: -8)
deleteTrailingAnchor?.isActive = true
现在我们必须根据需要管理deleteTrailingAnchor。
有没有更好的方法使用AutoLayouts来解决这个问题。
感谢您的帮助。
【问题讨论】:
-
为什么不把所有的按钮都放在一个 stackView 中?
-
为按钮添加宽度约束并将 NSLayoutConstraint 设置为该宽度约束
-
使用水平堆栈视图
-
我试过
UIStackView,当只剩下两个图标时,两个图标都占用了太多空间,因为stackView的宽度最初是4个按钮,当隐藏2个时,整个stackview宽度用于剩下的两个和两个按钮之间的间距变大了。 -
stackview 可能没用,因为在 stackview 中隐藏其他视图时会遇到同样的问题
标签: ios iphone swift ios-autolayout