我们有一个由Swift 3.2版本开发的6到8个屏幕的应用程序。我正在使用大小类(自动调整大小),不使用自动布局为所有设备工作正常。
但是,现在,我们想让它与iPhone X设备兼容。
我们在iPhone X中测试应用时,在子视图的顶部,底部视图甚至屏幕中心都存在很多问题。
我见过,很少有论坛被告知,在UI的故事板文件中使用“自适应圣人指南”,问题就解决了。但是,事件我尝试了这一点,在使用iPhone X测试应用程序时仍然存在很多差距和问题。
那么,如何使用我现有的代码与iPhone X兼容,我是否需要以编程方式更改below iPhone X and iPhone X,
的所有内容,或者是否有任何内容?
任何人都可以建议我,如何继续这样做。
注意:我们正在使用Xcode 9.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)