如何在使用xcode 5时使ios 6与app兼容

时间:2014-01-09 05:35:12

标签: ios objective-c ios6 ios7 xcode5

This is for ios 7 looks perfect This for is ios 6我花了一整天的时间来尝试我的make将兼容ios7和ios6,但很累。当我在ios 7中运行并设置基础时,我的应用程序运行正常sdk作为ios7及更高版本。我还将部署目标设为7.0。

现在,当我将基本sdk设置为ios6并将部署目标设置为6.1时,我的应用程序仍在运行,但问题是其GUI失真。尝试在模拟器6.1中也遇到了这个问题。

导航栏隐藏和所有图像标签文本字段表视图也设置为底部,因为它们与ios7中的固定位置一样。我不想放4 xib我已经把2 xib用于3.5英寸显示器和4英寸显示器。

3 个答案:

答案 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