提问人:Manjeet Singh 提问时间:12/20/2016 最后编辑:Bhavin RamaniManjeet Singh 更新时间:12/21/2016 访问量:391
当我们从视图中删除第三个按钮时,我们如何增加两个按钮的宽度
How we can increase width of two button when we remove third button from view
问:
我有三个大小相等的按钮的视图。每个按钮占视图的 1/3 部分。
像这张图片:
如果我删除/隐藏一个按钮,那么两个按钮的宽度应该相等增加并占据 1/2 的视图部分。如果我删除两个按钮,那么一个按钮大小应该等于视图大小。
我的问题是,如何使用自动布局。
答:
6赞
Sivajee Battina
12/20/2016
#1
最好的选择是使用 stackView。StackView 在添加或删除项目方面提供了很大的灵活性。如果您只想使用自动布局,您可以通过将其宽度约束连接为 IBOutlet 并以编程方式更改值来实现。
评论
0赞
Manjeet Singh
12/21/2016
是的,StackView 提供了更灵活、更易于创建的功能。但是我们如何仅使用常量来执行。请提供任何建议、教程或链接。
0赞
Akhil V Nair
12/20/2016
#2
最好的方法是使用 UISTACKVIEW。放置一个堆栈视图并添加 3 个按钮。您可以根据需要为堆栈视图提供适当的布局约束
单击堆栈视图 -- 选择属性检查器 改变分布--平均填充 间距--0
然后,如果您隐藏任何按钮,其他按钮将自动调整宽度
0赞
TheCodeTalker
12/20/2016
#3
此问题的其他可能解决方案是:在运行时添加或删除约束是一项重量级操作,可能会影响性能。但是,有一个更简单的选择。
对于要隐藏的视图,请设置宽度约束。使用与该视图的前导水平间隙约束其他视图。
若要隐藏,请将宽度约束的 .constant 更新为 0.f。其他视图将自动向左移动以占据位置。对于相等的宽度,pervoid 乘以宽度。.
0赞
Gianluca Tranchedone
12/21/2016
#4
您有以下几种选择:
UIStackView
正是为此而制作的。UICollectionView
在某种程度上类似于,但并不是真正为此而来的。但是,它可以很好地完成工作并且易于实施。有时比 .UIStackView
UIStackView
NSLayoutConstraint
通过使用具有不同优先级的多个约束,以便您可以根据需要激活/停用它们并获得所需的结果。这种方法稍微复杂一些,因为它为您提供了对层次结构中视图的最高程度的控制和灵活性。
0赞
EmilioPelaez
12/21/2016
#5
实现您正在寻找的目标的最佳方法是,就像其他人已经提到的那样,使用 .UIStackView
当堆栈视图内部的属性设置为 true 时,该堆栈视图将隐藏视图并处理布局,因此您只需要为堆栈视图设置正确的约束。isHidden
UIView
评论
UIStackView