为旧的 Xcode 7 / Swift 2 项目添加 iPhone X 布局支持

Posted

技术标签:

【中文标题】为旧的 Xcode 7 / Swift 2 项目添加 iPhone X 布局支持【英文标题】:Add iPhone X layout support to old Xcode 7 / Swift 2 project 【发布时间】:2018-02-04 13:39:04 【问题描述】:

我有什么?

一个使用 Swift 2 并在 Xcode 7 上构建/运行没有任何问题的旧项目。它有很多依赖项和复杂的架构,这使得迁移到 swift 3/4(在短时间内)变得复杂。

当应用在 iPhone X 上运行时,屏幕顶部和底部会出现黑条(大小与 iPhone 6/7/8 类似)

我需要什么?

我需要让应用程序在 iPhone X 上运行,屏幕顶部和底部没有黑条(全屏)不更新整个项目。有没有办法让它成为可能?

我尝试了什么?

直接对包含的超级视图而不是 layoutGuide 进行约束 删除 launchScreen 资产并仅保留 LaunchScreen.xib

【问题讨论】:

您必须将项目升级到 swift 4,因为 iPhone X 支持仅适用于使用 Xcode 9 编译的项目。任何编译的框架都应该无需修改即可工作。 另外,不升级项目是不可持续的。迁移后,尝试构建项目。有时 Xcode 会显示大量错误和警告,这些错误和警告会在迁移后的第一次构建时得到修复。 @Sam 谢谢!我知道迁移到 swift 4 是必要的,并且将来会简化工作,但现在我只需要这个东西。我之前在 Xcode 8 中做过这个技巧,所以我希望在 Xcode 7 中能以某种方式实现 Xcode 8 中有什么技巧?我不知道 Xcode 8 中全屏 iPhone X 支持的解决方案。你有链接吗? 【参考方案1】:

只有两种方法可以去除较新设备尺寸的黑条:

具有新尺寸的启动屏幕图片资源 启动屏幕故事板

而且,您很不走运,因为这两种解决方案都需要 Xcode 9 才能支持 iPhone X 尺寸。所以你必须至少选择 Swift 3.2。

【讨论】:

以上是关于为旧的 Xcode 7 / Swift 2 项目添加 iPhone X 布局支持的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 7 Swift 2 中将字符串与数组分开以供 HTML 使用

XCode 7.1.1 TableViewCell 的内容视图比单元格窄

终端默认为旧的纱线版本(lerna bootstrap)

无法使用 Xcode 7.3.1 在我的 Swift 2 项目中检查带有“po”的变量 - 加载辅助函数时出错

Alamofire 2.0 编译器问题 - Swift 2 / Xcode 7

Swift 2 的 Xcode 7.0 更新问题