简单的每设备NSLayoutConstraint常量

设计人员将您交给一个Sketch文件,然后您便开始将其转换为Interface Builder。 除非您发现设计人员希望为iPhone SE,常规设备和Plus设备设置不同的间距,否则这很简单。 您喜欢自动布局,并且知道在这种情况下Interface Builder的紧凑和常规版本无法提供任何帮助。

是时候解决这个问题了!

首先,拖出约束的IBOutlet并添加代码以使用测试屏幕尺寸的switch语句更新其常量 。 uck IBOutlet很脆弱。 您抛出IBOutlet并命名约束。 然后添加一些代码以通过其标识符查找约束。

也许更好。

但是所有这些都可以在代码中完成! 我们正在使用Interface Builder。 如果我们可以在IB中为约束设置每个设备的值,那就太好了! 像这样:

这是一个很大的帮助。 我们需要的是对NSLayoutConstraint的扩展!

这将3个变量添加到NSLayoutConstraint。 当UIKit加载XIB / Storyboard时,如果您在IB中设置了一个或多个这些变量,则将调用setter。 每个设置器都会检查当前屏幕大小以查看是否适用,如果适用,则更新约束的constant

如果您尚未为这些变量中的任何一个设置值,则约束的常数就是IB中设置的普通值。 这很棒; 您只需为具有不同设计值的约束条件设置这些新变量即可。

IBInspectable神奇地使变量出现在Interface Builder…中(感谢http://uibyblue.com指出了这一添加)。

一个有用的,微不足道的扩展是添加仅适用于3.5英寸显示器的第四个变量。