Xcode 5,如何使用与 IOS 6 和 IOS 7 兼容的 UI 构建应用程序 [重复]

Posted

技术标签:

【中文标题】Xcode 5,如何使用与 IOS 6 和 IOS 7 兼容的 UI 构建应用程序 [重复]【英文标题】:Xcode 5, How to build an app with UI compatible with IOS 6 as well as IOS 7 [duplicate] 【发布时间】:2013-10-21 11:04:06 【问题描述】:

我正在使用 Xcode 5。 我想构建一个与 ios 6 以及 IOS 7 兼容的 UI 的应用程序。任何人都可以帮我解决这个问题。应用应兼容 iPhone (3gs)、iPhone Retina 3.5 和 iPhone Retina 4。

当我在装有 IOS 6 的 iPhone (3GS) 上观看时,UI 会失真。

我已尝试启用自动布局,但某些屏幕的问题仍然存在。

【问题讨论】:

投票结束,因为 表示理解程度最低 谷歌搜索并找到developer.apple.com/library/ios/documentation/userexperience/… 并不难,一点点研究就可以阅读meta.stackexchange.com/questions/182266/… 【参考方案1】:

1:如果您使用的是 UINavigationController 并且您的导航栏是可见的,那么这是可行的

float systemVersion=[[[UIDevice currentDevice]systemVersion]floatValue];

if(systemVersion >=7.0f)


self.edgesForExtendedLayout=UIRectEdgeNone;

 

或 您也可以从 stoyboard 设置

2:另一种解决方案是 .你可以使用 IOS 6/7 Deltas

i) take new view and setting its Y postion is 20

ii) move all control into this view

iii)setting new view Detas Y Property is -20

现在你查看hirerachy 是这样的

您可以在下图中看到如何设置 Deltas 属性

【讨论】:

【参考方案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)

#define APP_VERSION_GREATER_THAN_OR_EQUAL_TO(v)     ([[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] compare:v options:NSNumericSearch] != NSOrderedAscending)

看看你的iOS版本是否大于iOS7:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) 
 // iOS 7 specific instruction

但是这个 IF-ELSE 还是很长,你可以这样做

#define IS_IOS_7 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")

然后

if (IS_IOS_7) 
  // instruction...

【讨论】:

以上是关于Xcode 5,如何使用与 IOS 6 和 IOS 7 兼容的 UI 构建应用程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xcode 5 为 iOS 6 构建? [关闭]

iOS 6 和 Xcode 5.0 的图标光泽

由 xcode 4.6 与 xcode 5.0 创建时,iOS 应用程序在 iOS 7.0 设备上的行为不同

在没有 XCODE 5 的运行 iOS7 的设备上测试 iOS 6 应用程序

对 iOS 5.0 和 iOS 6.0 使用 XCode 4.5 的困惑

在 Xcode 5 中支持 iOS 5 和 iOS 6