我花了一整天的时间来尝试我的make将兼容ios7和ios6,但很累。当我在ios 7中运行并设置基础时,我的应用程序运行正常sdk作为ios7及更高版本。我还将部署目标设为7.0。
现在,当我将基本sdk设置为ios6并将部署目标设置为6.1时,我的应用程序仍在运行,但问题是其GUI失真。尝试在模拟器6.1中也遇到了这个问题。
导航栏隐藏和所有图像标签文本字段表视图也设置为底部,因为它们与ios7中的固定位置一样。我不想放4 xib我已经把2 xib用于3.5英寸显示器和4英寸显示器。
答案 0 :(得分:1)
对我来说,如果我必须根据不同的iOS版本进行更改,请使用以下类来定义可以检测我正在使用的版本的函数。它还只需要一个头文件(.h)和没有实现(.m)文件。
我将此类称为VersionMacros。
VersionMacros.h:
/*
* System Versioning Preprocessor Macros
* Incluse this header if you want to adjust something based on a system version
*/
#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)
//Use these functions to detect versions. Also import this header file into the file u want to use these funcs.
然后当你想为两个版本使用不同的xib时,你可以调用它。
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO("7.0"))
{
//The version of the device is iOS7.0 or higher.
//call controller with ios7 xib here
}
else
{
//The version of the device is lower then iOS7.0.
//call controller with ios6 xib here
}
除了制作和调用不同的xib之外,您还可以调整需要调整的元素的帧。 (这是我更喜欢的) 这看起来像这样。
float versionMarginY = 0.0;
if(SYSTEM_VERSION_EQUAL_TO("7.0"))
{
//if system version is exactly 7.0
versionMarginY = 64.0;
}
else if(SYSTEM_VERSION_EQUAL_TO("6.0"))
{
//if system version is exactly 6.0
versionMarginY = 44.0;
}
else
{
//for all other versions we do this
}
//Then adjust a certain view that you can reach in this method
someView.frame = CGRectMake(0, 0 + versionMarginY, someWidthThatHasSomeKindOfValue, someHeightThatHasSomeKindOfValue);
希望这有帮助!
答案 1 :(得分:0)
我使用此条件通过使用iOS 6和7
的代码修复图形问题if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1){
//make it look nice iOS7
}
答案 2 :(得分:-1)
在info.plist中添加一个标志(基于视图控制器......来自plist的lastone)将其设置为NO