iphone - ios 7 模拟器不会为针对 ios 6.1 sdk 编译的应用程序回退用户界面

标签 iphone ios xcode

我们的 ios6.1-sdk 编译的应用程序在 ios 6.1 iphone 4、4s 和 5 设备上运行良好。在 ios7 iphone 5s 上运行该应用程序时,用户界面仍然看起来像 ios 6(黑色按钮等),但我们对大部分都很好,除了我们发现了一个错误。我猜这是因为 ios7 上的 API 实现发生了变化。

当我们的应用程序在 xcode 5 上针对 ios7-sdk 进行编译时,一切都崩溃了。 UI 对象未对齐,无法读取标签等。因此我们希望针对 ios6.1 sdk 编译我们的代码,但在 ios 7 上运行它。

在 Xcode 5 上我安装了 ios 6.1 sdk by copying it from Xcode 4.6.3 dmg as described on this post并在build设置上将 Base SDK 更新为 ios 6.1,但是在 ios 7 模拟器上运行应用程序时,用户界面不会回退到 ios 6.1。但是,如果针对运行 iOS 7 的物理 iPhone 测试该应用程序,它确实会回退到 iOS 6.1。

如何在运行 ios6-sdk 编译的应用程序时让 ios 7 模拟器回退用户界面,以便我们可以在模拟器上重现错误?

最佳答案

如果我正确理解您的问题... 我一直在使用我们的应用程序遇到同样的问题,需要保留 iOS6.1 界面,内置于 Xcode 5 并在 iOS7 中运行。我们的界面也乱七八糟,错位,工具栏缺少按钮。我们稍后会为 7 修复它,但现在没有时间,但需要它在 iOS7 上运行并仍然在 Xcode 5 中构建。

所以这就是我所做的: (我想发布一些屏幕截图,但我的 Mac 不在手边,如果需要,稍后再获取)

  • 我将 Xcode 4.6.3 与 Xcode 5 一起安装。
  • 我将 6.1 SDK 中的符号链接(symbolic link)添加到 Xcode 5 安装中。 (我发现了一个 SO 问题,会找到一个链接)或者你可以像以前一样安装它。

(接下来的两个选项可能不需要,但我们最终在测试中使用了它们,并且它有效,即使是新的 5S 64 位手机)

  • 在build设置中,我选择了构建架构以使用标准的非 64 位 armv7 选项,不要选择“包括 64 位”选项。

  • 同一个地方,Build Active Architecture Only to Yes

然后...

  • 同样在build设置中,将 Base SDK 设置为 iOS 6.1。 (我相信这是让它发挥作用的关键)

  • 应用程序目标的常规选项卡,将部署目标设置为 6.1(我们的仍然是 5.1,目前)

  • 在我们的 Storyboards 中,选择 File Inspector,在 Interface builder 部分我选择 opens in Xcode 4.6, Builds for iOS 5.1 and Later,并以 iOS 6.1 及更早版本查看。 (我的自动布局是未选中的,我们不使用它)

关于“打开方式”的最后一个选项的警告。如果选择“在 Xcode 4.6 中打开”,您将失去 iOS7 的 Storyboard 编辑功能。就我而言,我现在不在乎,因为无论如何我都希望它保持在 4.6 View 。要时刻铭记在心。我认为您可以将其切换回来,但尚未测试。

链接/安装 6.1 SDK 后,您应该能够在应用程序中运行时选择要在模拟器中使用的 iOS 版本。您将在顶部工具栏的事件模式下拉列表中看到它。例如,在我的例子中,我可以选择 iPhone Retina(4 英寸),然后我可以选择 iOS7 或 6.1。对我来说有趣的部分是,通过上面的设置,我可以在模拟器中运行我的应用程序,即使我选择 iOS7 作为模拟器事件模式,它看起来也像 iOS6。它甚至可以在 64 位模拟器中运行,在我的设置中,它只会显示 iOS7 选项。

至少这样我可以在 Xcode 5 中构建和工作,为 iOS7 用户临时分发应用程序,但保持 iOS6 样式、位置和按钮不变。现在我可以花更多时间过渡到 iOS7 风格,但仍然可以像 iOS6.1 一样修复错误和更新应用。

我希望这是有道理的,我希望它能回答你的问题。我希望我记得我所做的一切!想到什么我再补充。

关于iphone - ios 7 模拟器不会为针对 ios 6.1 sdk 编译的应用程序回退用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971919/

相关文章:

ios - 在 UICollectionView 单元格中隐藏按钮

c++ - 在 C++ 中使用 OpenSSL 的 CMS 实现

c++ - Xcode 与 Visual Studio : Difference in runtime for compiled C++ programs

ios - Core Bluetooth 在后台广告和扫描

android - React-Native:如何缩放字体大小以支持 Android 和 iOS 中的许多不同分辨率和屏幕?

iphone/objective c(简单)问题

ios - 在 iOS 应用程序中显示来自 Salesforce 的用户个人资料图片

ios - CFBundleVersion 必须是最多三个非负整数的句点分隔列表(警告 ITMS-9000)

ios - AFNetworking 2.0/AFHTTPRequestOperation 应用程序/x-www-form-urlencoded

iphone - 在 View 加载时修改 uitableview 上的多行