我有三个相同大小的按钮。每个按钮占据视图的1/3部分。
喜欢这张图片:
如果我删除/隐藏一个按钮,则两个按钮宽度应该相等地增加并占据视图的1/2部分。如果我删除两个按钮,那么一个按钮大小应该是相同的视图大小。
我的问题是,如何使用Autolayout。
答案 0 :(得分:6)
最佳选择是使用stackView。 StackView在添加或删除项目方面提供了很大的灵活性。如果您只想使用自动布局,可以通过将其宽度约束作为IBOutlet连接并以编程方式更改值来实现。
答案 1 :(得分:0)
最好的方法是使用UISTACKVIEW.Place堆栈视图并添加3个按钮。您可以根据需要为堆栈视图提供适当的布局约束
单击堆栈视图 - 选择属性检查器 改变分配 - 平等填补 间隔 - 0
然后,如果你隐藏任何按钮,其他按钮将自动调整宽度
答案 2 :(得分:0)
其他可能解决此问题的方法是在运行时添加或删除约束是一项可能影响性能的重量级操作。但是,有一个更简单的选择。
对于要隐藏的视图,请设置宽度约束。使用与该视图的前导水平间隙约束其他视图。
要隐藏,请将宽度约束的.constant更新为0.f.其他视图将自动向左移动以占据位置。对于宽度相等的pervoid乘数和宽度..
答案 3 :(得分:0)
您有几个选择:
UIStackView
完全是为此而制作的。UICollectionView
以某种方式与UIStackView
相似,但并非真正意义上的。但是,它可以很好地完成工作并且易于实现。有时比UIStackView
更容易。NSLayoutConstraint
使用具有不同优先级的多个约束,以便您可以根据需要激活/停用它们并获得所需的结果。这种方法有点复杂,因为它为您提供了对层次结构中视图的最高程度的控制和灵活性。答案 4 :(得分:0)
与其他人已经提到的一样,实现您所寻找的目标的最佳方式是使用UIStackView
。
当堆栈视图中isHidden
的{{1}}属性设置为true时,该堆栈视图将隐藏视图并处理布局,因此您只需要设置正确的堆栈视图的约束。