【问题标题】:UIButton dynamic width in autolayout自动布局中的 UIButton 动态宽度
【发布时间】:2015-11-06 13:47:17
【问题描述】:

大家好,我有一个。 当我删除或隐藏一个按钮时,我在控制器中有两个按钮,我希望其他按钮根据宽度增加尺寸。 这里我使用的是自动布局,所以请相应地发布您的答案

当我隐藏按钮其他按钮时,请参见上图,它应该根据大小进行调整。

【问题讨论】:

  • 哪个版本的iOS?你可以使用堆栈视图吗?
  • 如果这是 iOS 9,为什么不使用堆栈视图?
  • 我对stackview了解不多。
  • 所以这是一个绝佳的学习机会。您只需将堆栈视图和太阳视图添加到它。当您删除子视图时,它会为您重新组织其他子视图

标签: ios uibutton autolayout


【解决方案1】:
  1. 设置创建布局所需的所有约束,就像在您的第一个屏幕截图中一样
  2. 在 IB 中选择“时间按钮”和“现金支付”按钮并添加约束以对齐它们的后沿
  3. 选择这个新的“trailing-edges-constraint”并将其优先级设置为高 (750)
  4. (对“立即付款”按钮重复步骤 1-3,但这次对齐前缘)

就是这样!

【讨论】:

【解决方案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];
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 2016-08-01
      • 1970-01-01
      • 2013-07-23
      • 2010-11-24
      相关资源
      最近更新 更多