【问题标题】:Making a simple user interface work with Autolayout使用 Autolayout 制作简单的用户界面
【发布时间】:2015-03-30 18:52:00
【问题描述】:

我刚开始学习自动布局和 swift。我正在尝试使以下用户界面正常工作。

但是,在 iPhone 4s Simulator 上,添加约束后它看起来像这样(稍后描述)。我已经截取了整个模拟器的截图。

在其他设备上,例如 iPhone 6 plus,它看起来有所不同。我读到您应该添加您认为足以定义对象位置的约束。我添加了这些约束:

UIImageView 的约束

  1. 图像是“宽高比匹配”。
  2. 宽度限制。
  3. 纵横比。
  4. superview 的前导和顶部空间(我还尝试删除“前导空间”约束,而是添加“容器中的水平中心”约束)

我认为上述约束应该足以定义对象的大小和位置。

UITextField 的约束

  1. 宽度限制。
  2. 纵横比。
  3. 领先空间到superview。
  4. 垂直间距到UIImageView

同样,应该足以定义文本字段的位置。 XCode 似乎不这么认为。如何使这个简单的界面工作?我错过了什么?

编辑

让 XCode 推断约束效果最好。我为两者设置了宽度和纵横比约束。 XCode 推断出其他约束(顶部空间、底部空间和图像视图的水平中心到超级视图以及文本字段相对于图像视图的水平中心)。

我的问题是,您认为我原来的约束有问题吗?如果我能理解这一点,那么我可以继续使用复杂的界面。让 XCode 推断约束并不总是有效。

【问题讨论】:

    标签: iphone swift ios8 uiimageview autolayout


    【解决方案1】:

    您可以尝试删除宽度限制。相反,将后沿添加到超级视图。使用纵横比,应该使图像适合屏幕。

    【讨论】:

    • 所以,从UIImageView 开始,我删除了宽度并将后沿添加到超级视图。我保持UITextField 约束不变。它不起作用。你能告诉我为什么会这样吗?我们的任何一个约束都应该足以定义大小和位置。
    • 查看我的编辑。在这个特定的界面中,让 XCode 推断约束是有效的。但是对于一个稍微复杂的接口,它就失败了。任何建议。
    • 对不起,我不明白这个问题。也许你最好再问一个问题?
    • 让我再试一次。对于问题中的界面,我们的任何一个约束都失败了,但是,当我告诉 XCode 根据宽度和纵横比的约束推断其他约束时,它可以工作。但是,我们不能在复杂的接口中这样做。所以我的问题是,你看到我原来的约束有问题吗?如果我能理解这一点,那么我可以继续使用复杂的界面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2017-04-24
    • 2015-07-13
    • 2013-07-21
    • 2018-09-28
    • 1970-01-01
    相关资源
    最近更新 更多