我应该如何构建因 iPhone 设备而异的自动布局约束
How should I build autolayout constraints varied by iPhone Devices
我正试图通过 iPhone 版本改变我的自动布局约束。 traits 的 vary 允许您根据大小 类 进行区分。但是所有纵向的iPhone都是紧凑的宽度和常规的高度。
假设我有一个水平居中的元素,但我希望我与主视图顶部的距离根据设备大小而变化,我应该如何实现?
您不能在自动布局中指定屏幕尺寸或设备版本 - 只能指定尺寸 类。
如果相对 positioning/sizing 不适合你,你想做定位,比如 iPhone SE 上的 5 pts 和 iPhone 6 上的 15 pts,你必须通过代码来做。您的选择是:
- 不要使用自动布局...
- 更改约束值(常量、乘数、优先级等)
如果您通读 Apple 关于自动布局的文档,您会发现它针对的是自适应 界面设计,而不是备用 界面设计.
方法 1:以编程方式更改约束值
如果要为iPhone 变量设置不同的常量上限值,则创建一个Top Constraint 出口并更改其常量值。
_topConstraint.constant = Conditional code for each device.
方法 2:设置自适应约束
例如:我采用了固定高度 = 100、宽度 = 200 的视图并将其水平居中。
现在它会根据设备大小给出相应的顶部space,请准备好进行一些数学运算。
假设,iPhone5 屏幕中的顶部 space = 36 pt。
总视图高度 = 顶部视图 + 视图高度 = 36 + 100 = 136
屏幕总高=568 底部比例=568/136=4.17
因此,设置底部布局约束并将乘数添加为 4.17。
enter image description here
在iPhone 7 plus 和其他设备上,它会自动更改顶部。
我正试图通过 iPhone 版本改变我的自动布局约束。 traits 的 vary 允许您根据大小 类 进行区分。但是所有纵向的iPhone都是紧凑的宽度和常规的高度。
假设我有一个水平居中的元素,但我希望我与主视图顶部的距离根据设备大小而变化,我应该如何实现?
您不能在自动布局中指定屏幕尺寸或设备版本 - 只能指定尺寸 类。
如果相对 positioning/sizing 不适合你,你想做定位,比如 iPhone SE 上的 5 pts 和 iPhone 6 上的 15 pts,你必须通过代码来做。您的选择是:
- 不要使用自动布局...
- 更改约束值(常量、乘数、优先级等)
如果您通读 Apple 关于自动布局的文档,您会发现它针对的是自适应 界面设计,而不是备用 界面设计.
方法 1:以编程方式更改约束值
如果要为iPhone 变量设置不同的常量上限值,则创建一个Top Constraint 出口并更改其常量值。
_topConstraint.constant = Conditional code for each device.
方法 2:设置自适应约束
例如:我采用了固定高度 = 100、宽度 = 200 的视图并将其水平居中。
现在它会根据设备大小给出相应的顶部space,请准备好进行一些数学运算。
假设,iPhone5 屏幕中的顶部 space = 36 pt。
总视图高度 = 顶部视图 + 视图高度 = 36 + 100 = 136
屏幕总高=568 底部比例=568/136=4.17
因此,设置底部布局约束并将乘数添加为 4.17。
在iPhone 7 plus 和其他设备上,它会自动更改顶部。