如何使用iOS Simulator 7 \ XCode 5来testingiOS 7之前的UI(无需升级iOS 7的应用程序)

在XCode 4.6.3上编译我的应用程序并在iOS 7上运行它效果很好。

在XCode 5上编译我的应用程序并在iOS 7上运行它会导致一个很大的UI混乱,我现在不想处理它。 (iOS 7采集器,tabbars,tableviews等)

目标:

我希望能够使用XCode 5并在iOS 7模拟器上testing我的应用程序,但仍然使用iOS 6和更低的UI,并感觉。

原因:

我不想重新devise我的应用程序到iOS 7,但我想确保它使用XCode 5 iOS 7模拟器在iOS 7上正常运行。

XCode 5上是否有快速切换来强制所有内容保持不变?

在XCode 5中使用iOS 6 Base SDK可以接受还是有点太过分了?

编辑:

使用iOS 6 SDK不起作用。 你仍然可以看到你的应用程序的iOS 7,只是更多的马车。

这是场景:

  • 您的应用在iOS 6及更低版本上正常工作
  • 你想在iOS 7上testing你的应用程序
  • 如果您的设备上安装了iOS 7,则需要使用XCode 5才能对其进行testing
  • 如果你想在iOS 7模拟器上testing它,你需要为它安装XCode 5
  • 在XCode 5编译你的工作应用程序将打破所有地狱宽松,并迫使你重新devise你的应用程序,至less在iOS 7
  • 到目前为止,build议的解决scheme将帮助您了解您的应用在iOS 7上的外观,但不会让iOS 6和iOS 7保持较低的外观。

迄今为止我find的最佳解决scheme:

  1. 将您当前的XCode更新为XCode 5
  2. 从这里下载XCode 4.6.3
  3. 将它安装在不同的位置,并将应用程序的名称更改为XCode4以区分两者。
  4. find您的XCode 5应用程序图标,右键单击它并select“显示包装内容”
  5. find文件夹MacOS并将xcode文件移动到其文件夹之外。 最后两个步骤是防止你意外地用Xcode 5打开项目。另一种方法是更改​​默认的“打开方式”的应用程序,但由于某些原因,这对我没有用,再加上我想要更加确定后,我有一个XCode 5开发的项目和StoryBoard只能与XCode 5兼容。 *
  6. 打开XCode 4.6.3并运行你的项目。 在模拟器菜单中,您现在应该可以看到iOS 7.即使在XCode顶栏中,您将看到AppName-> iPhone 6.1 Simulator ,在模拟器上selectiOS 7将在iOS 7中运行您的应用程序,并保持一切。

在上面你将有两个版本的iOS模拟器。 包含iOS 7模拟器的版本6和版本7。

第5步:

在这里输入图像说明

复制iPhoneSimulator6.1.sdk

 <YOUR XCode4 path>/Xcode4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ 

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 

并将您的基本目标设置为iOS6.1(从xcode4复制/粘贴后将列出)和

在这里输入图像说明在这里输入图像说明

你不能在iOS 7模拟器上做到这一点。 您可以在iOS 6模拟器(在Xcode 5下运行)和设备上运行(只要使用iOS 6 SDK构build就可以运行iOS 7)。 但iOS 7模拟器中没有iOS 6兼容模式。

请注意,iOS 6兼容模式并不是iOS 6的完美复制。您仍然可能需要testing和处理各种行为差异。 但基本的UI组件就是你所期望的。

编辑 – 请注意,强制应用程序无法使用Xcode 5在iOS 7设备上使用iOS 6界面(除非您制作自定义graphics)。 这也不是一个好的devise方法 。 iOS 7用户期望某种UI风格,这就是为什么他们更新; 所以给他们,不要强迫他们回到一个更老的界面。

如果你确实需要iOS-7以前版本的界面,你可以下载一个Xcode 4的拷贝,然后用它来编译。 然而,从2014年2月1日开始,苹果将停止接受使用比Xcode 5.0早的任何东西构build的应用程序(我想我已经看到了iOS 7开发文档中的一些内容,但是无法再次find该参考)。


在应用程序中保留iOS 6 UI,但为iOS 7构build相当简单。 确保您已将您的部署目标设置为iOS 6.1或更低版本。 虽然你的基础SDK仍然可以设置为iOS 7。 现在,只需按照下面的说明为每个接口文件:

  1. 打开你的故事板文件或XIB文件
  2. 打开右侧的实用程序面板。
  3. 点击文件检查器选项卡。 你现在应该看到这样的东西:

    Xcode 5实用程序面板和文件检查器

  4. 接下来转到“界面构build文档”部分,将“ Builds For设置更改为iOS 6.0及更高版本或您需要的任何版本。

    Xcode 5实用程序面板接口构建文档部分

  5. 然后将View As设置更改为iOS 6.1或更低版本

    Xcode 5接口构建文档部分 - 查看设置

  6. Xcode会提示你,只是确认你想转换到旧的用户界面。

确保在iOS 6模拟器中运行您的项目。 否则,iOS 7模拟器将覆盖它自己的iOS 7 UI风格。 要下载iOS 6 Simulator,请转到Xcode菜单栏。 selectXcode,首选项。 然后点击下载选项卡。 最后,点击你需要下载的模拟器:

在这里输入图像说明

然后在iOS 6模拟器上运行你的应用程序: 在这里输入图像说明

不幸的是,甚至禁用Xcode中的iOS 7 UI也不会在设备/模拟器上覆盖它。 除非您devise自定义用户界面元素,否则无法在iOS 7上维护iOS 6 UI 。 但正如我向您展示的, 您可以继续在iOS 6中编辑它并为iOS 6构build

如其他答案中所述,将6.1 SDK连接到Xcode 5是一个步骤。 但是这仍然不能解决在iOS 7新的UI元素上运行的问题,视图控制器被做成全尺寸的等等。

如本答案中所述,还需要在iOS 7上将UI切换到传统模式:

 // put in main.m [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"]; [[NSUserDefaults standardUserDefaults] synchronize]; 

注意:这是一个无证的密钥,不build议用于App Store构build!

另外,使用Xcode 4.6构build的版本也有细微的差别。 例如,透明导航栏的行为不同(导致视图为全尺寸)。

但是,由于Xcode 4.6.3在Mavericks上崩溃(至less对我来说,请参阅rdar:// 15318883 ),这至less是继续使用Xcode 5进行debugging的一种解决scheme。

更新:只有在使用LLDB时才会发生Xcode 4.6.3在Mavericks上的崩溃。 当切换回GDB它的作品。

与我的意见相反,我实际上可以按照链接中提到的步骤。 我所尝试的并不是什么黑客行为:

  • 打开XCode 4.6应用程序包(我已经安装了)
  • 进入Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs文件夹。
  • 复制iPhoneOS6.1.sdk文件夹。
  • 打开XCode 5应用程序包。
  • 转到相同的Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs文件夹。
  • 糊。

然后,我可以看到iOS 6.1是一个选项,可以在Build Settings->Base SDKsBuild Settings->Base SDKs我的iOS项目。

但是,即使在iOS 7模拟器下运行应用程序之后,我仍然感觉不到任何视觉差异,所有这些都是以默认iOS 7风格的无边界button和条形图呈现的。

重置模拟器后没有变化。

更改故事板版本后也没有改变。

所以这又似乎证实了我的断言,这是不可能的。

如果有人试过,我想知道。

我认为在XCode 5(和iOS7模拟器)上显示iOS 6控件的唯一方法是将Target的基本SDK设置为iOS 6.1(6.0)。

您应该将旧的sdk复制到像Nirav所描述的XCode 5,并重新启动XCode以使其在Base SDK选项下可见。

我的猜测是,它不适合Nirav,因为他改变了项目的设置,在他的情况下,他们已经从目标的设置不同步。 所以请确保您的目标的基础SDK是iOS 6.0。 那么它应该工作(至less它对我来说)。

这将给你一个应用程序将如何在iOS 6中使用Xcode 5的预览。

我在WWDCvideo上看到了这个。

406 – 控制自动布局xcode 5(约32分钟)

使用故事板中的预览function。

在这里输入图像说明

这将允许你selectiOS 7和iOS 6的外观。

在这里输入图像说明

该video显示了xcode的一个很酷的(几乎隐藏的)function,可以让您同时查看iOS6和iOS7的预览,将Xcode分成3个独立的视图

我想补充说的是,虽然你可能无法在模拟器中做到这一点,但你可以在具有iOS 7的实际设备上以兼容模式运行你的应用程序。

哇,这真是一团糟。 谢谢,苹果[*]

我得到了这个(这个:XCode 5构buildiOS 6的应用程序)为我工作,但我有几个XIB的搞砸了,它结合了上述几个步骤来使它工作。

1)用iOS 6 base sdk设置XCode 5

@Sha有很好的步骤: 如何使用iOS模拟器7 \ XCode 5来testingiOS 7以前的UI(无需升级iOS 7的应用程序)

2)通过每个XIB并将其设置为XCode 4.6模式

@RazorSharps后有很好的步骤: 如何使用iOS模拟器7 \ XCode 5来testingiOS 7以前的UI(无需升级iOS 7的应用程序)

我不确定这是100%的要求,但我做到了,它的工作原理。 (也许我以后会回去试试没有这个,当我还没有发烟的时候)。

3)find可能设置为半透明的XIB(或代码)中的任何导航控制器,将其设置为不透明

这是我的伎俩。 我有一个根XIB,将导航栏定义为“黑色半透明”,但是所有装载了XIB的XIB都以自己的外观覆盖。
在“真正的iOS 6”中,控制器设置将覆盖这个(也就是说,导航栏将显示为不透明),但是在iOS 7上的iOS 6兼容模式下,它不会(也就是说,它将具有iOS 6外观,透明,视图布局混乱)。

    • @appledevtools:我们感谢您的辛勤工作,这是很难得到正确的。 但是这里有一个build议:当把现有的项目升级到XCode 5时,IB xib应该保留在XCode 4.6模式下。 让“编辑器”>“validation设置”代码提供来升级设置,并提供合理的含义警告。 不要这样做自动&默默 :-)另外,请find并解决为什么在iOS 6兼容模式下更改导航栏样式。

好消息是,我们现在可以使用XCode 5(现在是版本5.0.1(5A2053))将基本sdk设置为iOS 6.1,并且现在在iOS 7模拟器上testing和debugging我们之前iOS7devise的应用程序。

对于那些不知道如何为iOS Xcode设置base SDK的人来说, 这个链接可能是一个指导。

一切似乎工作正常,相同的iOS7以前的devise外观和感觉,除了一些操作系统提供控制像ActionSheet外观和行为在iOS 7的方式。

顺便说一句,我已经升级我的mac os昨天特立独行,不知道这是否是一个影响因素。

工作对我来说,但这里的解释需要清理和详细说明。 如果仍然需要,让我知道,我会进入更多的细节。

它从这个答案继续

  • 除了复制iPhoneOS6.1.sdk文件夹之外,还需要下载iOS 6.1模拟器(正确的方式或者从旧版Xcode中复制)
  • 然后,复制iOS 7模拟器,并用6.1模拟器的plistreplace它的plist
  • 重新启动Xcode
  • 然后,您将看到每个设备选项的两个iOS 7模拟器选项。 一个将是正常的iOS 7模拟器。 另一个将在7模拟器上运行你的6.1 SDK版本
  • 警告之后你可能无法从Xcode的下拉列表中删除虚拟仿真器(我还没有尝试过,在我去掉虚拟仿真器文件夹之后,

将部署目标从部署信息设置为iOS 7.0。 为了点击项目名称,在第一个屏幕上,您将看到部署信息…将部署目标更改为7.0。 在退出模拟器之后,再次构build并运行应用程序。