如何为不同的屏幕尺寸设置不同的自动布局约束

Vit*_*pov 22 uitableview uiimageview ios swift ios-autolayout

我有一个带静态单元格的tableView.单元格包含一个完全填充它的ImageView.我还有另一个较小的ImageViews.我使用约束来定位这个ImageViews.我有一个关于调整约束的问题.如何在不编程if/else循环的情况下,如何为不同的设备大小设置不同的约束常量.有没有办法在故事板中设置它?我有一个主要布局的主要约束,例如,常数值为10.这对于iPhone 5屏幕是可以的,但在iPhone 6/6 plus屏幕上它应该高于10. iPhone5 Autolayout iPhone6 Autolayout

Sah*_*Roy 56

很容易.您可以在Storyboard中更改差异大小类的常量值.我给你一些步骤,之后你就能掌握它.

首先,我们在此视图中创建常量 在此输入图像描述

接下来,我们选择我们想要更改其他大小类中的值的常量. 在此输入图像描述

现在是棘手的部分.在选择常量后的属性检查器中,您可以看到常量的值.在你旁边可以看到"恒定"左侧的加号(+). 在此输入图像描述

单击它并选择所需的大小类.在这里,我选择了常规高度常规宽度,即iPad尺寸. 在此输入图像描述

接下来我们给它一个新值.因此,当在大小等级的iPad大小类中渲染时,常量值(通常为61)将在10时起作用. 在此输入图像描述

这是输出 - iPhone 4 - 在此输入图像描述

iPad Air - 在此输入图像描述

如您所见,相同的常量在运行时对应于不同的大小类具有不同的值.

希望我的解释对你有帮助.

  • 关键是iPhone5和6在Portrait中具有相同的大小等级,并且在屏幕上具有不同的图像比例. (12认同)

dre*_*gin 10

无需编写任何代码!

当我的初级开发人员问了我一个相同的问题时,我当时如何才能在iPhoneSE和iPhone6之间进行区分,只有一个解决方案正在编写类似

if device == iPhoneSE { 
   constant = 44 
} else if device == iPhone6 {
   constant = 52
}
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我创建了一个库布局助手,现在您可以为每个设备更新约束,而无需编写任何代码。

在此处输入图片说明

步骤1

将NSLayoutHelper分配给您的约束

在此处输入图片说明

第2步

更新所需设备的约束

在此处输入图片说明

第三步

运行该应用程序并查看MAGIC

在此处输入图片说明