Iphone 使用Autolayout创建简单的用户界面

Iphone 使用Autolayout创建简单的用户界面,iphone,swift,ios8,uiimageview,autolayout,Iphone,Swift,Ios8,Uiimageview,Autolayout,我刚开始学习自动布局和swift。我正在尝试使以下用户界面正常工作 然而,在iPhone4S模拟器上,添加了后面描述的约束之后,看起来是这样的。我已经拍摄了整个模拟器的截图 在其他设备上,比如iphone6plus,它看起来不同。我读到你应该添加约束,你认为这些约束足以定义对象的位置。我增加了这些限制: UIImageView的约束 图像是方面匹配的。 宽度限制。 纵横比。 superview的前导空间和顶部空间我还尝试删除前导空间约束,而是在容器中添加水平中心约束 我认为上述约束应足以定义对象

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

然而,在iPhone4S模拟器上,添加了后面描述的约束之后,看起来是这样的。我已经拍摄了整个模拟器的截图

在其他设备上,比如iphone6plus,它看起来不同。我读到你应该添加约束,你认为这些约束足以定义对象的位置。我增加了这些限制:

UIImageView的约束

图像是方面匹配的。 宽度限制。 纵横比。 superview的前导空间和顶部空间我还尝试删除前导空间约束,而是在容器中添加水平中心约束 我认为上述约束应足以定义对象的大小和位置

UITextField的约束

宽度限制。 纵横比。 引导空间到superview。 UIImageView的垂直间距。 同样,应该足够定义textfield的位置。似乎XCode不这么认为。我如何使这个简单的界面工作?我错过了什么

编辑

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


我的问题是,您是否看到我的原始约束中存在错误?如果我能理解这一点,那么我就可以转向复杂的接口。让XCode推断约束并不总是有效。

您可以尝试删除宽度约束。相反,将后缘添加到superview。通过纵横比,应该可以使图像适合屏幕。

因此,我从UIImageView中删除了宽度,并将后缘添加到superview中。我保留了UITextField约束的原样。它不起作用。你能告诉我为什么会这样吗?任何一个约束都应足以定义尺寸和位置。请参阅我的编辑。在这个特定的接口中,让XCode推断约束是有效的。但是对于一个稍微复杂的接口,它失败了。有什么建议吗?对不起,我不明白这个问题。也许你最好再问一个问题?让我再试一次。对于问题中的接口,我们的任何一个约束都失败了,但是,当我告诉XCode根据宽度和纵横比的约束推断其他约束时,它就起作用了。然而,我们不能在复杂的接口中这样做。所以我的问题是,你认为我的原始约束有缺陷吗?如果我能理解这一点,那么我就可以转向复杂的接口。