如何让我的应用仅在纵向模式下适合所有 iPhone 尺寸

How to get my app to fit all iPhone sizes in Portrait Mode only

我已经搜索过,但仍然无法让我的应用在纵向模式下适应所有 iPhone 尺寸,从 iPhone 4 到目前最大尺寸 iPhone。

让我的应用在纵向模式下适合所有尺寸 iPhone 的最佳方法是什么?

我创建了大小为 iPhone Xs 的应用程序。我该怎么做才能让我的应用适合 iPhone 4 及以上的所有 iPhone 尺寸?

你应该阅读 iOS Auto Layout。它具有所有功能,但学习曲线陡峭。一旦你掌握了原则,一切都会自动开始工作(除了一些错误)。

另外,为了适应不同的 iPhone 屏幕尺寸,您应该使用 layout margin guide 来确保更大的 iPhone 具有更大的边距,反之亦然。

由于 iPhone X 和更新版本有其他显示比例,如果您的 UI 不是所有列表或基本内容,您可能想在代码中对其做一些特殊的事情。

实现此目的的唯一方法是使所有内容都与宽度和高度成比例,因此您必须忘记设置静态值,另一种方法是使内容可以滚动并设置您想要的任何宽度/高度需要,我还建议使用 iphone 5/4 布局,让您靠近剪辑设备,这样您就可以更好地构建设计,并确保它能在大型设备中正确缩放,一些关键项目需要寻找

AutoLayout

Adaptive AutoLayout

Safe Area Layout Guides

如果您面临复杂的计算,也可以随意将约束拖动为出口并在代码中进行调整

通常,扩展 UI 以适应多种设备的最佳方法是使用 Auto Layout。您可以使用约束在运行时根据设备计算帧,而不是使用固定帧大小定义界面。

可以在 Interface Builder 中添加约束,方法是按住 Ctrl 从一个视图组件拖动到另一个视图组件,然后使用属性检查器进行微调。

否则,如果您愿意,可以在代码中创建和应用您的约束:

override func viewDidLoad() {
    super.viewDidLoad()

    let myView = UIView()
    myView.backgroundColor = .red
    myView.translatesAutoresizingMaskIntoConstraints = false

    view.addSubview(myView)

    NSLayoutConstraint.activate([
        myView.widthAnchor.constraint(equalToConstant: 50),
        myView.heightAnchor.constraint(equalToConstant: 50),
        myView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        myView.centerYAnchor.constraint(equalTo: view.centerYAnchor)
    ])
}

无论设备屏幕大小如何,上面的示例都会在屏幕中央添加一个红色框。