ios 6和ios 7在视图中的相关性

问题描述:

正如我们在iOS 7中所了解的那样,状态栏与视图重叠但在iOS 6中不重叠。ios 6和ios 7在视图中的相关性

我开发了iOS7的整个应用程序,现在我被要求为它提供iOS6支持 但它只是一团糟。

,因为我们在这个问题Overlaps the status bar on view iOS7看到有针对iOS 7的解决方案是像iOS6的

,但我可以把它相反的方式?并以某种方式使iOS 6的行为像iOS7的状态栏?

你不能让iOS 6状态栏像iOS 7状态栏一样行动,它们是完全不同的设计。 iOS 7使用平板UI,而iOS 6则不使用。请仔细阅读iOS 7 transition guide,以便更好地了解以及如何处理差异。

具体朝向状态栏here是该文档的一部分,告诉您如何处理它。

+0

感谢您的回答! –

简答:不,你不能。

iOS 6 SDK不允许您像iOS 7那样控制状态栏。

你可以做的是调整大小,因此它不会在您的实际布局

首先失去任何结构,你可以定义一个常量知道什么时候它的iOS 7与否:

#define kIS_IOS_7 (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) 

那么在你的AppDelegate你可以改变导航栏外观如下:

UIView *background = [[UIView alloc] init]; 
if (kIS_IOS_7) { 
    background.frame = CGRectMake(0, 0, 360, 64); 
} else { 
    background.frame = CGRectMake(0, 0, 360, 44); 
} 
background.backgroundColor = [UIColor blackColor]; // choose your color or image 
UIGraphicsBeginImageContext(background.frame.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[background.layer renderInContext:context]; 
UIImage *backgroundImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

[[UINavigationBar appearance] setBackgroundImage:backgroundImage 
            forBarMetrics:UIBarMetricsDefault]; 
+0

所以我不能使状态栏是transperent并将我的整个视图范围原点y移动到-20? –

+0

@ user2957713不在iOS 6上没有抱歉。我提供的指南中包含了您在支持iOS 6和iOS 7方面可能遇到的所有问题。还有一些必须和应该在那里,如果支持两者,您可能需要阅读。 – Popeye

+0

好吧,似乎我会有难的时间:( 感谢您的回答 –