如何仅在人像模式下使我的应用适合所有iPhone尺寸

时间:2018-11-19 22:55:39

标签: ios iphone swift4.2 xcode10.1

我进行了搜索,但仍然遇到问题,无法使我的应用程序在从iPhone 4到目前最大尺寸的iPhone的纵向模式下适合所有iPhone尺寸。

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

我以iPhone Xs的大小创建了该应用程序。如何使我的应用程序适合iPhone 4及更高版本的所有iPhone尺寸?

3 个答案:

答案 0 :(得分:2)

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

  

AutoLayout

     

Adaptive AutoLayout

     

Safe Area Layout Guides

如果您面对复杂的计算来拖动约束作为出口并在代码中进行调整,也可以放心

答案 1 :(得分:1)

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

要适应不同的iPhone屏幕尺寸,您还应该使用layout margin guide,以确保更大的iPhone有更大的页边距,反之亦然。

由于iPhone X和更高版本的显示比例不同,如果您的用户界面不是全部列表或基本内容,则可能需要在代码中进行一些特殊的设置。

答案 2 :(得分:1)

通常,扩展UI以适合多个设备的最佳方法是使用Auto Layout。您不必使用固定的框架大小来定义接口,而可以使用约束条件来根据设备在运行时计算框架。

可以在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)
    ])
}

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

Auto Layout Example