根据 iPhone 用户使用的内容更改约束值

changing constraints values depending on which iPhone the user use

因为所有 iPhone 都在使用 wC hR 屏幕类别,所以我无法找到一种方法来更改 iPhone 11 Pro max 和 iPhone 8 之间的某些限制有一个非常不同的屏幕尺寸。

有办法吗?或者我只需要想出适合所有 iPhone 屏幕尺寸

的设计

我认为检查每个 iPhone 模型并不是真正可扩展的,而且似乎也是多余的。

1) 在我看来你可以做的事情是 从你想要支持的基础 iPhone 模型开始,比方说 iPhone SE,制作您的设计非常适合 iPhone SE 和 ,然后在运行时放大到当前设备屏幕尺寸

您将得到一个 scale ratio,例如 1.2、1.8.. 等,您可以(在运行时)将其应用于 font sizes 等约束:

var scaleRatio: CGFloat = {
    let iPhoneSEWidth: CGFloat = 320
    let currentDeviceWidth = UIScreen.main.bounds.size.width
    return currentDeviceWidth/iPhoneSEWidth
}()

并且可以这样应用:

label.font = font.size(12 * scaleRatio)

其中 12 是适合 iPhone SE(您的基础)的字体大小,然后在运行时它会缩放到您的基础屏幕大小与当前 iPhone 屏幕大小之间的当前比率.

2) 您可以在 UI 设计中做的另一件事可能不是定义特定约束,例如 widthheight 或其他 anchor常量是定义一个视图的锚点约束与其他视图的锚点约束成比例;例如,您可能希望视图的宽度始终是其容器宽度的一半或视觉上大约一半,您可以使用 multiplier:

childView.widthAnchor.constraint(equalTo: containerView.widthAnchor, multiplier: 0.5).isActive = true

这完全取决于哪种策略更适合哪种 constraints 你想扩大规模,以及你想如何扩大规模,但我认为遵循这两种心态,可以给你带来一个好的UI 在不同 iPhone 屏幕中缩放。