我可以构建一个针对每个设备上不同操作系统版本的通用应用程序吗?

时间:2013-08-07 07:32:39

标签: ios ios-universal-app

我想制作一款通用应用,适用于支持iOS 5和iPad但支持iOS 6及更高版本的iPhone

是否可以使用相同的Xcode项目/应用程序构建执行此操作?

我想在iPad版本中使用UICollectionView UICollectionViewWaterfallLayout,这需要iOS 6或更高版本。

4 个答案:

答案 0 :(得分:2)

由于部署目标适用于两种设备,因此无法实现; iPhone和iPad。如果您将其设置为5.0,两者将支持最少的iOS 5.0。你不能为个人设置它。

如果要设置完全不同的布局,则在加载控制器时,您可以检查设备的iOS版本和设备类型。您必须为此制作不同的viewcontrollers。

e.g。

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0") && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        //load controller with UICollectionView layout
    }
else

{
//load simple layout controller
}

上面的宏引用如下。抓住它们,因为它们对整个应用非常有用。将它们写在.pch文件中。

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)

#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

答案 1 :(得分:2)

您可以通过使用下面的某些宏检查操作系统版本来同时使用单个应用程序中的内容

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

所以你会像

一样使用它
if(SYSTEM_VERSION_LESS_THAN(@"6.0")){
    //Do your stuffs that supports below 6.0
}else if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")){
    //Do your stuffs that supports => 6.0
}

我希望你能这样做。 感谢。

答案 2 :(得分:1)

这是不可能的。您只能为App定义一个基本SDK和一个部署目标。

答案 3 :(得分:1)

简单来说, NO 是不可能的。