【问题标题】:Old app to support for iPhone X?支持 iPhone X 的旧应用程序?
【发布时间】:2017-11-06 07:32:51
【问题描述】:

我的旧 iOS 应用程序在所有 iPhone 版本(iPhone X 型号除外)上都运行良好。我遇到了 iPhone X 模拟器,看到一些屏幕在 iPhone X 屏幕的底部重叠。我的应用程序所有 uiviewcontrollers 都是以编程方式创建的,不是由故事板设计的。因此,在所有视图控制器中,我使用 (self.view.frame) 来查找其帧大小。在 iPhoneX 中,故事板中设计了安全防护区域。但是我如何在运行时计算安全保护区。在搜索谷歌时,它提供了一些示例来找到 iOS11 支持的安全防护区域。但我想从 ios9 运行我的应用程序?我的项目中有很多 uiviewcontrollers .. 那么谁能告诉我完成这项任务的最简单方法?

【问题讨论】:

  • iPhone 8 怎么样?
  • 你添加了 1125px × 2436px 的闪屏图片吗?
  • 添加了启动画面图像。但仍然存在问题。

标签: ios objective-c iphone iphone-x


【解决方案1】:

将 iPhone X 布局问题的运行时修复添加到旧的(故事板之前的手动布局)应用程序(具有旧的 pre-11 部署目标)的一种可能方法是添加类似于以下内容的 Objective C 代码:

CGRect r0 = self.view.frame;
CGRect r1 = r0;
if (@available(iOS 11.0, *)) {
    r1 = self.view.safeAreaLayoutGuide.layoutFrame;     
}
if ( r1.size.height < (r0.size.height - 20.0) ) {
    // fix top and bottom view overlap outside safe area here
}

在每个 UIViewController 的 viewWillLayoutSubviews 方法中。

@available 检查将使此代码在 iOS 11 之前的 iOS 版本中安全使用。

【讨论】:

  • 我有 xcode8.2.. 我将使用情节提要创建新的 iOS 应用程序和 UI 设计...我想在 iPhoneX 中运行我的应用程序而不会出现问题。我怎样才能使用 xcode8.2 做到这一点?有可能吗?或者我必须需要 xcode9。
  • 您确实需要 Xcode 9 才能支持 iPhone X。因为 Xcode 8.x 不知道新设备,并且应用程序的视口顶部和底部都有黑带。
猜你喜欢
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多