【问题标题】:Autolayout constraint issue when device orientation gets changed更改设备方向时的自动布局约束问题
【发布时间】:2015-05-29 09:24:34
【问题描述】:

我在自动布局方面遇到问题。 我想要两个按钮,如屏幕截图所示。我希望它们也能在横向模式下正确显示。

1) 按钮应水平居中对齐。

2) 按钮的宽度和高度应该相等。

3) 按钮在两个方向(横向和纵向)上都应该与父视图的中心垂直距离相等

我遇到了条件 3 的问题。我希望用户界面在所有尺寸的设备上在两个方向上都是统一的。

是否可以使用自动布局来实现这一点,或者我需要更新方向更改的约束?

我正在考虑在 superview 的中心添加另一个视图,并对该视图应用以下约束以实现所需的 UI

1) 添加另一个透明视图的大小(父视图的宽度,1)

2) 为新添加的视图添加水平和垂直居中对齐约束。

3) 为新添加的视图添加所有必需的约束,例如宽度、高度和 x 位置。

现在只有两个这样的按钮

4) 使用新添加的视图将底部空间约束添加到按钮 1 5) 使用新添加的视图将顶部空间约束添加到按钮 2

这样它在所有方向和所有尺寸的设备上都将保持不变。

这种方法不好,因为我们需要添加额外的视图。 请建议是否有人有更好的方法/想法

【问题讨论】:

    标签: ios xcode6.1 autolayout ios-autolayout


    【解决方案1】:

    我认为最好的实用解决方案是将按钮嵌入视图中。

    所以重置所有约束。选择您的两个按钮并将它们嵌入到视图中:

    之后设置此视图始终居中对齐:

    此时需要设置:

    • 按钮的高度和宽度
    • 按钮之间的距离
    • 视图的高度和宽度:
      • 高度 =(按钮高度 + 按钮之间的距离)
      • width = 按钮的宽度
    • 设置按钮的顶部和底部约束,以便它们可以适合视图;例如顶部按钮:

    这是我的最终结果:

    iPhone 6 纵向:

    和风景:

    【讨论】:

    • 感谢 Massimo,这意味着我们需要添加一个额外的视图来实现所需的行为?
    • 是的,你需要一个额外的视图(视图容器)比你的 2 个按钮更长。您不需要手动添加,但是(按照我的说明)如果您选择 2 个按钮并选择“编辑器 --> 嵌入 --> 视图”,Xcode 会自动添加
    【解决方案2】:

    1) 按钮应水平居中对齐。 选择一个按钮

    2) 按钮的宽度和高度应该相等。

    选择一个按钮

    3) 按钮在两个方向(横向和纵向)上都应该与父视图中心的垂直距离相等 选择一个按钮 进入中心

    然后修改常量

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      相关资源
      最近更新 更多