如何将兼容的现有应用程序制作到iPhone X.

时间:2017-12-28 07:20:24

标签: ios iphone swift iphone-x

我们有一个由Swift 3.2版本开发的6到8个屏幕的应用程序。我正在使用大小类(自动调整大小),不使用自动布局为所有设备工作正常。

但是,现在,我们想让它与iPhone X设备兼容。

我们在iPhone X中测试应用时,在子视图的顶部,底部视图甚至屏幕中心都存在很多问题。

我见过,很少有论坛被告知,在UI的故事板文件中使用“自适应圣人指南”,问题就解决了。但是,事件我尝试了这一点,在使用iPhone X测试应用程序时仍然存在很多差距和问题。

那么,如何使用我现有的代码与iPhone X兼容,我是否需要以编程方式更改below iPhone X and iPhone X,的所有内容,或者是否有任何内容?

任何人都可以建议我,如何继续这样做。

注意:我们正在使用Xcode 9.2

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

它不仅仅是iPhone X的东西,它也是iOS 11的东西。 iOS 11引入了一个全新的插入式调整API,它在它之前的大部分内容(可能是全部?)中弃用。使用iPhone X的物理设计,必须更加注重安全区域。

所以习惯写这些:

if #available(iOS 11.0, *) {

    // new iOS 11 syntax
    someView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true

} else {

    // pre-iOS 11 syntax
    someView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true

}

safeAreaLayoutGuide现在是视图本身的一个属性,它更直观,IMO。更多新API语法的示例:

someView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
someView.widthAnchor.constraint(equalTo: view.safeAreaLayoutGuide.widthAnchor).isActive = true
someView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true

如果您对获取插入值感兴趣:

if #available(iOS 11.0, *) {
    someViewAnchor.constant = view.safeAreaInsets.bottom
} else {
    someViewAnchor.constant = bottomLayoutGuide.length
}
  

如果您正在使用故事板,则应立即打开它们,然后转到该文件   检查员,然后选择使用安全区域布局指南复选框 - 那   将切换到新系统。   https://www.hackingwithswift.com/articles/12/how-to-update-your-app-design-for-iphone-x

答案 1 :(得分:0)

添加Safe Area Guides后,您需要对约束属性进行少量更改,例如在应用Safe Guide superview需要后使用屏幕的superview.top和superview.bottom的那些约束更改为下面的图片中的Safe Area

enter image description here