【问题标题】:iOS Autolayout: two buttons of equal width, side by sideiOS自动布局:两个等宽的按钮,并排
【发布时间】:2015-03-24 18:58:27
【问题描述】:

我目前在使用 AutoLayout 时遇到困难。我正在使用界面生成器,并尝试将两个等宽的按钮并排放置,如下图所示。

从下面的预览图像中,我的 titleImage 已得到适当的约束并且可以正确显示,但按钮却没有。我已经尝试将按钮 1 与 titleImage 的前沿对齐,将 button2 与 titleImage 的后沿对齐,但是此时两个按钮之间的宽度分布会出现偏差,如下所示。

我的目标是了解缺少哪些约束,并且应该将其应用于两个按钮以保持相同的宽度,而不管设备如何。如果可能的话,我想通过界面生成器来实现这一点,而不是额外的代码。

【问题讨论】:

标签: ios iphone xcode autolayout


【解决方案1】:

添加以下约束

  1. 将按钮 1 的宽度分配给按钮 2。
  2. 在两个按钮之间分配水平间距。
  3. 将 button1 的前导空格分配给其父视图。
  4. 将 button2 的尾随空格分配给其父视图。
  5. 为两个按钮分配顶部空间。
    请让我知道这对你有没有用。

【讨论】:

  • 非常好——这对我有用。特别是第 2 点 - 添加水平间距。
  • 哇!!!我是什么意思?它真的像一个魅力,我已经浪费了大约 3 个小时! :( 在我的情况下,我在划分它的超级视图中有两个宽度相等的视图。但是它最后问我“需要 Y 或高度的约束”,我选择执行“添加缺少的约束”并解决了。
  • @Abubakr :它仅适用于一种屏幕尺寸,因为两个按钮的宽度相同。
  • 也适用于超过 2 个相邻的 UI 元素!
  • 谢谢,但我找到了解决方案,而且代码更好。将其中任何一个中心对齐到父级并给出内容大小的恒定一半,您可以在代码中计算它,或者如果内容是静态的,您可以只更新帧并更新常量。除此之外,还将两个按钮之间的中心间距的一半添加到该中心对齐。只需将前导或尾随传递给另一个按钮。为我解决这个问题。如果您的内容是内在的并且需要更新,只需调用布局更新方法并再次计算常量值。
【解决方案2】:

按照步骤和屏幕截图轻松解决


步骤一)

  • 对于按钮 1:设置约束: (1)Leading,(2)Top or Bottom asper your need,(3)Height


第二步)

  • 对于按钮 2:设置约束: (1)尾随,(2)根据您的需要顶部或底部,(3)高度

第 3 步)

  • 按 Ctrl + 从按钮 1 拖动到按钮 2

  • 选择水平间距


第四步)

  • 选择两个按钮(使用命令)并添加约束等宽


输出

希望对你有帮助:)

【讨论】:

  • 高度不应固定。让视图根据屏幕大小决定按钮的高度。
  • @KunalKumar 这种情况下高度是固定的。你能告诉我你想要什么吗?
  • @Vvk ...完美的兄弟:)
【解决方案3】:

iOS9 中的堆栈布局,会做得非常好。 将堆栈视图添加到您的视图并进行如下配置:

【讨论】:

    【解决方案4】:

    您可以查看我的示例 - 您可以通过使用比例约束轻松瞄准。 您也可以轻松瞄准多个 UIView。 请看附件示例

    https://dl.dropboxusercontent.com/u/48223929/TestViewController.xib

    【讨论】:

      【解决方案5】:

      我的解决办法是

      1. 在两个按钮中间放一个小视图,使其居中(容器中水平居中,容器中垂直居中为0)。
      2. 为小视图添加高度和宽度。
      3. 添加按钮约束并为小视图提供水平空间约束。
      4. 为小视图提供与按钮或视图颜色相同的背景颜色。

      注意:见截图。

      【讨论】:

        猜你喜欢
        • 2015-06-19
        • 1970-01-01
        • 2011-02-21
        • 2014-09-14
        • 2015-12-28
        • 2015-08-06
        • 1970-01-01
        • 2013-01-31
        相关资源
        最近更新 更多