如何以编程方式设置iOS 6/7增量

如何以编程方式设置iOS 6/7增量,ios,objective-c,uisearchbar,xcode5,delta,Ios,Objective C,Uisearchbar,Xcode5,Delta,当我离开iOS6时,我正在使用Xcode 4.6开发一个UISplitView应用程序,当时我正在设计: 现在我迁移到新的Xcode5,现在我有了这样的设计: UINavigationBar完全重叠我的UISearchBar Leo Natan告诉我使用iOS 6/7 Delta,但由于我正在以编程方式创建和添加UISPlitViewController 这可能不起作用,我需要以编程方式设置iOS 6/7,但我不知道如何设置,我将感谢任何帮助在iOS 7中现在有扩展的边缘,这就是为什么导航栏

当我离开iOS6时,我正在使用Xcode 4.6开发一个UISplitView应用程序,当时我正在设计:

现在我迁移到新的Xcode5,现在我有了这样的设计:

UINavigationBar完全重叠我的UISearchBar

Leo Natan告诉我使用iOS 6/7 Delta,但由于我正在以编程方式创建和添加UISPlitViewController


这可能不起作用,我需要以编程方式设置iOS 6/7,但我不知道如何设置,我将感谢任何帮助在iOS 7中现在有扩展的边缘,这就是为什么导航栏与搜索栏重叠。您可以设置self.edgesForExtendedLayout=UIRectEdgeNone这是UIVewControlelr属性。 您还可以根据iOS版本进行检查,也可以根据设备中当前的iOS版本进行操作

NSString *version = [[UIDevice currentDevice] systemVersion];
int ver = [version intValue];
if (ver < 7){
//iOS 6 work
}
else{
//iOS 7 related work
}
NSString*版本=[[UIDevice currentDevice]系统版本];
int ver=[version intValue];
如果(版本<7){
//iOS 6工作
}
否则{
//iOS 7相关工作
}

此外,您还可以使用NSFoundationVersionNumber

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
  // > iOS7
} else {
  // <= iOS6
}
if(楼层(NSFoundationVersionNumber)>NSFoundationVersionNumber\u iOS\u 6\u 1){
//>iOS7
}否则{

//您可以创建一个makro来解决此问题。 这对我很有用

#define iOS7Delta (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 ) ? 20 : 0 )

如果视图嵌入到UINavigationController中- 只需取消选中根导航栏的“半透明”

在情节提要中,选择导航控制器场景, 接下来选择导航栏并在属性检查器中(实用程序-4选项卡)
取消勾选“半透明”

如果要在代码中执行此操作,必须使用帧。
If(iOS7){view.frame=…}else{view.frame=…}
@PetroKorienev还是只更改约束常数?这比更新帧更容易。OP不使用自动布局,而是用代码初始化控制器。在代码中添加约束比更新帧更难。苹果在iOS 7过渡指南中建议了这种方法。