我正在为iOS 7开发一个iOS应用程序,UI反映了这个iOS版本。但是,我想发布给其他iOS系统,比如6或5。因此,我将更改我的UI和目标iOS版本。我必须保存其他项目,与此修改?我将如何为不同的iOS版本发布相同的应用?谢谢,很抱歉这个愚蠢的问题,我什么也没发现。
发布于 2013-12-10 15:18:33
在您的应用程序中,将部署目标设置为iOS 5。
当涉及到UI时,请在iOS 7过渡指南上阅读此Apple。
那些你已经读过并且理解了它,然后你可以转移到实际创建你的UI。
当我创建了基于iOS版本的UI时,我有一个前置宏集
#define IOS_VERSION() [[UIDevice currentDevice] systemVersion];这是设置在我的***-Prefix.pxh文件,以便我可以访问它在我的整个应用程序。
然后我就可以用这样一个简单的if statement来检查这个
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([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,或者用另一种方式构建它,然后再继续前进。
发布于 2013-12-10 15:22:02
您应该在一个应用程序中这样做,它将在您允许的任何版本上运行。首先,将部署目标设置为要支持的最老版本。
通过使用约束或基于已知常量的UI维度,您可以完成大多数依赖于OS版本的任务。
要处理的一个大问题是iOS 7中状态栏和透明条的显示方式不同。如果您使用的是Interface,您可以使用XCode中右侧栏上的View检查器来设置iOS6 6/7 Deltas,这些Deltas将根据运行的版本而定。还可以通过选择xib的根视图和打开标识检查器来预览IB中的差异。在Interface文档下,将"View“更改为您希望看到的OS版本。
如果所有这些都失败了,您可以在代码中测试OS版本,以便为版本编写自定义代码。
例如:
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
//ios 6 code
} else {
//ios 7 code
}发布于 2013-12-10 15:20:17
你应该只有一个应用程序支持所有这些。
在您的XCode项目设置中,将有一个名为deployment的设置。这应该是您的应用程序支持的Min OS版本。在您的例子中,它将是5.0。
进入UI和其他功能更改。您应该在基于当前OS版本的运行时执行这些操作。利用[[UIDevice currentDevice] systemVersion],您可以根据这个版本分别加载。
https://stackoverflow.com/questions/20497973
复制相似问题