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

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

按钮对齐如

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

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

【问题讨论】:

    标签: ios objective-c uibutton autolayout nslayoutconstraint


    【解决方案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 并为更改设置动画。然后覆盖按钮将填满整个空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多