2013-12-10 56 views
0

我正在开发iOS 7的iOS应用程序,用户界面反映了这个iOS版本。但是,我想向其他人发布iOS,比如6或5。 因此,我会更改我的用户界面和目标iOS版本。我必须保存其他项目,这个修改?我如何为不同的iOS版本发布相同的应用程序?感谢并为这个愚蠢的问题感到抱歉,我没有找到任何关于它的事情。iOS发布到多个ios版本

+1

- 你需要两个不同的故事板。原生控件在不同的版本上看起来不同,因此您不需要做任何事情就可以拥有两种不同的本机设计 – medvedNick

+0

因此,如果我在屏幕上使用本机设计,则可以将其设置为iOS 5版本,并在执行应用程序时在iOS 7设备上,界面将自动“重新定义”? –

+0

是的。你可以尝试在模拟器上。这里是使用iOS 6和iOS 7上的SAME原生控件的[图片](http://ukrainianiphone.com/wp-content/uploads/2013/06/ios7-vs-ios6_co.design_6-630x475.jpg)。但你最好说,“在iOS 5上它将被重新定义” – medvedNick

回答

1

在您的应用程序设置部署目标到iOS 5

当谈到UI有这个苹果文档的读取上iOS 7 transition guide

你已经阅读并了解它,然后你可以转移到实际创建你的用户界面。

当我创建了我的用户界面的基于IOS版本我有一个prepocessor宏设置

#define IOS_VERSION() [[UIDevice currentDevice] systemVersion]; 

这是我***-Prefix.pxh文件中设置的,所以我可以在我的应用程序访问它。

然后我就可以像这样

if(IOS_VERSION => 7.0) { 
    // Do our iOS 7 stuff here 
} else { 
    // Do everything else, you could add else if to check 6.0, 5.0 even 4.0 
} 

记得在包装器一些if statements方法调用,以及用一个简单的if statement检查。像:

if([object respondsToSelector:@selector(setTitle:forState)]) { 
    // object being whatever object you are wanting to work on UIButton, UILabel, UIView. 
    // The reason for this is some methods will be in iOS 7 or even 6 but not in iOS 5 
    // so if you called them methods you will received unrecognised selector excpetion. 
} 

您还可以使用界面构建看到链接我已经提供了出头如何在界面生成器。

根据iOS版本您的设计会有所不同。如果你在iOS 7上运行,它将具有新的平面UI外观,而如果你在其他iOS上构建,它将具有旧的外观。当转向新的外观时,我们不得不在应用程序中修复很多差异,但我们必须修复一些问题。我会推荐先创建iOS 5和6,然后再创建7或以另一种方式在一个之前完成,然后再继续。

+0

和ios 7的UI?是不同的,我不得不“绘制”另一个接口... –

+0

@Lücks看到更新的答案。 – Popeye

+0

那么取决于你想如何做一些做一个全新的界面使用接口生成器一些代码。我通常编码,但这是我个人的偏好。 – Popeye

0

你应该只有一个应用程序支持所有这些。

在您的XCode项目设置中会有一个名为deployment traget的设置。这应该是你的应用支持的Min OS版本。在你的情况下,它将是5.0。

即将到来的UI和其他功能的变化。您应该在运行时根据当前的操作系统版本进行操作。使用[[UIDevice currentDevice] systemVersion]您可以根据此版本分别加载。

3

你应该在一个应用程序中做到这一点,它会运行在你允许的任何版本上。首先将您的部署目标设置为您想要支持的最旧版本。

通过使用约束或基于已知常量的UI尺寸,可以完成大多数与操作系统版本相关的任务。

需要处理的一个大问题是iOS 7中状态栏和透明条的显示方式存在差异。如果您使用Interface Builder,则可以使用XCode右侧栏上的“查看”检查器来设置应用的iOS6/7 Deltas,具体取决于所运行的版本。您还可以通过选择xib的根视图并打开“标识”检查器来预览IB中的差异。在Interface Builder Document下,将“View as”更改为要查看的操作系统版本。

如果一切都失败了,您可以在代码中测试操作系统版本以编写一个版本的自定义代码。

例如:

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    //ios 6 code   

} else { 
    //ios 7 code 

} 
如果你想使用完全不同的设计,这是由您绘制
+0

那么,我可以将部署目标放到iOS 5中,并且设计会根据使用我的应用程序的设备而有所不同? –

+1

是的,原生控件将针对操作系统版本进行适当的定义。 – Ike