Iphone ios 7模拟器';t针对根据ios 6.1 sdk编译的应用程序的回退用户界面

Iphone ios 7模拟器';t针对根据ios 6.1 sdk编译的应用程序的回退用户界面,iphone,ios,xcode,Iphone,Ios,Xcode,我们的ios6.1-sdk编译应用程序在ios 6.1 iphone 4、4s和5设备上运行良好。在ios7和iphone5s上运行应用程序时,用户界面看起来仍然像ios6(黑色按钮等),但我们对大部分都很满意,只是发现了一个bug。我猜这是因为ios7上的API实现发生了变化 当我们的应用程序在xcode 5上根据ios7 sdk编译时,一切都会崩溃。UI对象未对齐,标签无法读取等。因此,我们希望根据ios6.1 sdk编译代码,但在IOS7上运行 在Xcode 5上,我安装了ios 6.1

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

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

在Xcode 5上,我安装了ios 6.1 sdk,并在构建设置中将基本sdk更新为ios 6.1,但是在ios 7模拟器上运行应用程序时,用户界面不会回到ios 6.1。不过,如果该应用程序是针对运行ios 7的物理iphone进行测试的,那么它确实会回到ios 6.1


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

您描述的外观恐怕是ios 7的正确行为。表视图内容大小的计算方式不同,例如(这将更改许多元素的位置)以及许多其他更改

如果您希望保持iOS 6的外观,则需要在Xcode 4.6而不是5下编译。您仍然可以在iOS 7下运行它,事实上,您可以通过在Xcode 5中对iOS 7设备进行授权,然后切换回Xcode 4.6,从而使iOS 7设备显示出来供开发


我建议您也阅读苹果的,以获得有关设计iOS 7兼容UI的建议。

尝试在模拟器中“重置内容和设置”,并确保在构建和运行时,您在XCode中使用的模拟器和SDK适用于您的方案。如果您按照描述安装了iOS 6.1 SDK,您应该会在目标方案的可用模拟器列表中看到乍一看似乎重复的内容-其中一个会给您提供所需的行为(很可能是“iOS 7.0 | iOS 7.0 SDK”,但看起来并不总是如此)。确保您的部署目标也设置为6.1或更低版本,并且您的基本SDK设置为6.1(如您所述)

如果我正确理解您的问题。。。 我在我们的应用程序中遇到了同样的问题,需要保持iOS6.1接口,内置于Xcode 5中,并在iOS7中运行。我们的界面也很混乱,没有对齐,工具栏也没有按钮。我们将在7日后修复它,但现在没有时间,但需要它在iOS7上运行,并且仍然在Xcode 5中构建

以下是我所做的: (我想发布一些屏幕截图,但我手头没有mac电脑,如果需要的话,会在稍后发布)

  • 我将Xcode 4.6.3与Xcode 5一起安装
  • 我在Xcode 5安装中添加了6.1 SDK中的符号链接。(我发现一个关于这个的问题,我会找到一个链接)或者你可以像以前那样安装它
(接下来的2个选项可能不需要,但我们最终在测试中使用了它们,而且它可以工作,即使是新的5S 64位手机)

  • 在构建设置中,我选择构建体系结构来使用标准的非64位armv7选项,不要选择“包括64位”选项

  • 同一地点,仅构建活动体系结构至“是”

然后

  • 同样在构建设置中,将基本SDK设置为iOS 6.1。(我相信这是成功的关键)

  • app target的General选项卡,将部署目标设置为6.1(目前我们的仍然是5.1)

  • 在我们的故事板中,在我选择的Interface builder部分中选择File Inspector,它将在Xcode 4.6中打开,并为iOS 5.1及更高版本构建,并以iOS 6.1及更高版本查看。(我的自动布局未选中,我们不使用它)

关于“在中打开”的最后一个选项的警告。如果选择“在Xcode 4.6中打开”,将丢失iOS7的情节提要编辑。在我的例子中,我现在不在乎,因为我希望它保持在4.6视图中。记住这一点。我想你可以把它换回去,但还没有测试过

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

至少通过这种方式,我可以在Xcode 5中构建和工作,为iOS7用户临时分发应用程序,但保持iOS6样式、位置和按钮完好无损。现在我可以花更多的时间过渡到iOS7风格,但仍然可以修复bug并更新应用程序,就像它是iOS6.1一样


我希望这是有道理的,我希望它回答了你的问题。我希望我记得我所做的一切!如果我想点什么的话,我会补充更多。

谢谢大家的帮助,但到目前为止,让我重现这个错误的最佳解决方法是继续使用xcode 4.6.3,并将ios 7模拟器安装到xcode 4.6.3中

我通过并排安装xcode 5和4.6.3(将xcode.app复制到xcode 4.6.3.app中,然后从应用商店安装xcode 5(将覆盖xcode.app)),然后使用符号链接

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk

/Applications/Xcode4.6.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk

确保执行此操作时xcode未打开。如果您已经覆盖了4.6.3至5,您可以从下载4.6.3的dmg

然后我说:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iOS Simulator.ap