根据条件以编程方式拉伸 UIButton 宽度

Posted

技术标签:

【中文标题】根据条件以编程方式拉伸 UIButton 宽度【英文标题】:Programmatically stretch UIButton width depending on condition 【发布时间】:2015-08-31 17:02:29 【问题描述】:

我有两个 UIButtons 到一个 232px 宽的视图中。

按钮对齐如

|[BUTTON1][BUTTON1]|
|-------232px------|

我对此对齐有一组约束,但现在我希望能够根据条件将BUTTON1 的框架更改为全宽,因此必须以编程方式进行。我尝试更改框架,但由于它是自动更新的,所以它不起作用。基本上,我想要实现的是BUTTON1覆盖BUTTON2,有没有简单的方法可以做到这一点?

【问题讨论】:

【参考方案1】:

由于您在项目中使用 autoLayout,因此要更改按钮的框架,您必须更改 UIButton 的约束。

首先制作按钮宽度约束的 IBOutlet,然后当您想要更改按钮的框架时,像这样更新该约束

button.widthConstraint.constant = //set the constraint;
[UIView animateWithDuration:0.25f
             animations:^
                 [self.view setNeedsLayout];
             
             completion:^(BOOL finished) 
             ];

【讨论】:

在更新的问题中,我更清楚地说明了我的最终目的。我希望 BUTTON1 覆盖 BUTTON2 (有效地使其全宽)。这段代码给了我一个无法满足约束的错误。【参考方案2】:

制作按钮的出口和宽度约束,然后

self.buttonWidthConstraint += 20 // adjust as per requirements
[self.myButton updateConstraints]

【讨论】:

在更新的问题中,我更清楚地说明了我的最终目的。我希望 BUTTON1 覆盖 BUTTON2(有效地使其全宽)。这段代码给了我一个无法满足约束的错误。【参考方案3】:

您可以将想要覆盖的按钮的常量设置为 0 并为更改设置动画。然后覆盖按钮将填满整个空间。

【讨论】:

以上是关于根据条件以编程方式拉伸 UIButton 宽度的主要内容,如果未能解决你的问题,请参考以下文章

重新限制 UIButton 的宽度

使用条件语句以编程方式切换 UIButton 文本

如何在iOS中以编程方式从UIButton中删除等宽约束

根据最小尺寸包装小部件,然后拉伸它们以填充可用宽度

使用自定义 UIButton 以编程方式调用 ViewController PopOver

如何向放置在 UIStackView 中的以编程方式创建的 UIButton 添加约束