自动布局中的 UIButton 动态宽度
Posted
技术标签:
【中文标题】自动布局中的 UIButton 动态宽度【英文标题】:UIButton dynamic width in autolayout 【发布时间】:2015-11-06 13:47:17 【问题描述】:大家好,我有一个。 当我删除或隐藏一个按钮时,我在控制器中有两个按钮,我希望其他按钮根据宽度增加尺寸。 这里我使用的是自动布局,所以请相应地发布您的答案
当我隐藏按钮其他按钮时,请参见上图,它应该根据大小进行调整。
【问题讨论】:
哪个版本的ios?你可以使用堆栈视图吗? 如果这是 iOS 9,为什么不使用堆栈视图? 我对stackview了解不多。 所以这是一个绝佳的学习机会。您只需将堆栈视图和太阳视图添加到它。当您删除子视图时,它会为您重新组织其他子视图 【参考方案1】:-
设置创建布局所需的所有约束,就像在您的第一个屏幕截图中一样
在 IB 中选择“时间按钮”和“现金支付”按钮并添加约束以对齐它们的后沿
选择这个新的“trailing-edges-constraint”并将其优先级设置为高 (750)
(对“立即付款”按钮重复步骤 1-3,但这次对齐前缘)
就是这样!
【讨论】:
不,这不起作用,但我使用了以下链接,它对我有一点帮助,但没有解决问题。 ***.com/questions/16009405/… 看看我的示例项目,看看它是否有效:dropbox.com/sh/8i28u5ncnx6y1ws/AADlWbQEvLdFTg0AraZcMwwea?dl=0 这是有效的,但我不使用stackview,因为它只适用于ios 9。【参考方案2】:FDStackView
使用 UIStackView 就好像它支持 iOS 6。它会在 iOS 9 之前的运行时自动将 UIStackView 的符号替换为 FDStackView。
或者您可以使用 UIView 数组来保存您想要的按钮。数组的第一个和最后一个元素是一个 1px 宽度 0.01 alpha UIView。使第一个左对齐屏幕左侧,最后一个右对齐屏幕右侧。
您需要做的就是将按钮放入数组中,并确保每个按钮都在 1px 视图之间。
【讨论】:
【参考方案3】:您可以通过创建其“宽度约束”出口手动添加此约束,如下所示:
无论你想在哪里重新设置它的宽度,你都可以手动设置,
- (IBAction)buttonClicked:(id)sender
[UIView animateWithDuration:0.15 animations:^
_widthConstraint.constant = 100;
];
[self.view layoutIfNeeded];
[self.view updateConstraints];
【讨论】:
以上是关于自动布局中的 UIButton 动态宽度的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 动态内容中的自动布局,底部有 UIButton
如何使用自动布局防止 UIButton 超出其父 UIView 的宽度
stackView swift中uibutton问题的自动布局/宽度