根据iOS中的设备高度定位视图

时间:2015-01-21 11:11:33

标签: ios autolayout

我正在切换到autolayout,我想相对于设备的高度定位视图。我应该如何设置约束以满足这种条件。

我有适合iPhone 5的布局,但对于iPhone 6Plus,我想将“红色”移动到“灰色”的位置:

iPhone 5s layout iPhone 6Plus layout

目前我所有的约束:

Constrains Xcode

3 个答案:

答案 0 :(得分:1)

一个想法可能是将用户名,密码和登录项放在带有clearBackground的uiView上,然后为该视图及其超级视图创建约束并为其创建一个出口。然后,您可以检测代码中使用的手机,并在willLayoutSubviews中以编程方式修改约束。

if ((int)[[UIScreen mainScreen] bounds].size.height == 736)
{
    // This is iPhone 6+ screen
    myConstraint.constant = 150;

} else if ((int)[[UIScreen mainScreen] bounds].size.height == 568) {
    // This is iPhone 5s screen
    frameRateLabelHeightConstraint.constant = 100;
}

毫无疑问,在Autolayout中有更好的方法可以做到这一点,但我觉得它有点令人困惑所以我过去曾使用过这种方法。

答案 1 :(得分:1)

以上是@ One Drive上传的示例项目。以下是各种版本的iPhone模拟器的示例输出... iPhone 4/4S iPhone 5/5S iPhone 6 iPhone6+

答案 2 :(得分:0)

我认为你想把你的表格放在视野的中心。所以我认为最好的解决方案是将表单元素放在另一个透明视图上,并添加到此视图centerX aligment约束和centerY aligment约束。

您可以检查另一种方式here