Objective c iOS 7状态栏背景

Objective c iOS 7状态栏背景,objective-c,cocoa-touch,ios7,Objective C,Cocoa Touch,Ios7,我有一些顶部有工具栏的视图控制器,看起来像这样 如何填充状态栏背景以匹配工具栏背景,使其与新的iOS 7样式匹配?您需要在app delegate中添加子视图,并根据自己的喜好更改颜色。下面是位于ApplicationIDFinishLaunchingWithOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

我有一些顶部有工具栏的视图控制器,看起来像这样


如何填充状态栏背景以匹配工具栏背景,使其与新的iOS 7样式匹配?

您需要在app delegate中添加子视图,并根据自己的喜好更改颜色。下面是位于
ApplicationIDFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // Override point for customization after application launch.
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        UIView *addStatusBar = [[UIView alloc] init];
        addStatusBar.frame = CGRectMake(0, 0, 320, 20);
        //change this to match your navigation bar or view color or tool bar
        //You can also use addStatusBar.backgroundColor = [UIColor BlueColor]; or any other color
        addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1];
        [self.window.rootViewController.view addSubview:addStatusBar];
    }
    return YES;
}
看看评论。您可以在
addStatusBar.backGroundColor
中使用任何类型的颜色来匹配所需的颜色。请注意,这里的红色只是产生一个黑色背景,请根据需要进行更改。对于深灰色,将其替换为以下代码:

addStatusBar.backgroundColor = [UIColor colorWithRed:85.0/255.0 green:85.0/255.0 blue:85.0/255.0 alpha:1];
编辑:

要更改各个视图中的状态栏颜色,只需在
[super viewdiload]之后插入
viewdiload
方法中的以下代码(该代码将访问要更改的视图)
将更改您放置代码所在视图中状态栏的颜色

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    UIView *addStatusBar = [[UIView alloc] init];
    addStatusBar.frame = CGRectMake(0, 0, 320, 20);
    addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1];
    [self.view addSubview:addStatusBar];
编辑1:

如果试图在导航控制器的导航栏顶部添加子视图,则必须将子视图的位置增加两倍,如下所示:

UIView *addStatusBar = [[UIView alloc] init];
    addStatusBar.frame = CGRectMake(0, -20, 320, 20);
    addStatusBar.backgroundColor = [UIColor colorWithRed:127.0/255. green:0.0/255. blue:127.0/255. alpha:1];
    [self.view addSubview:addStatusBar];
    [self.navigationController.navigationBar addSubview:addStatusBar];

此外,还需要将子视图添加到导航控制器导航栏的子视图中。我将子视图的背景颜色设置为紫色,但您可以更改它。

您需要在app delegate中添加子视图,并根据自己的喜好更改颜色。下面是位于
ApplicationIDFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // Override point for customization after application launch.
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        UIView *addStatusBar = [[UIView alloc] init];
        addStatusBar.frame = CGRectMake(0, 0, 320, 20);
        //change this to match your navigation bar or view color or tool bar
        //You can also use addStatusBar.backgroundColor = [UIColor BlueColor]; or any other color
        addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1];
        [self.window.rootViewController.view addSubview:addStatusBar];
    }
    return YES;
}
看看评论。您可以在
addStatusBar.backGroundColor
中使用任何类型的颜色来匹配所需的颜色。请注意,这里的红色只是产生一个黑色背景,请根据需要进行更改。对于深灰色,将其替换为以下代码:

addStatusBar.backgroundColor = [UIColor colorWithRed:85.0/255.0 green:85.0/255.0 blue:85.0/255.0 alpha:1];
编辑:

要更改各个视图中的状态栏颜色,只需在
[super viewdiload]之后插入
viewdiload
方法中的以下代码(该代码将访问要更改的视图)
将更改您放置代码所在视图中状态栏的颜色

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    UIView *addStatusBar = [[UIView alloc] init];
    addStatusBar.frame = CGRectMake(0, 0, 320, 20);
    addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1];
    [self.view addSubview:addStatusBar];
编辑1:

如果试图在导航控制器的导航栏顶部添加子视图,则必须将子视图的位置增加两倍,如下所示:

UIView *addStatusBar = [[UIView alloc] init];
    addStatusBar.frame = CGRectMake(0, -20, 320, 20);
    addStatusBar.backgroundColor = [UIColor colorWithRed:127.0/255. green:0.0/255. blue:127.0/255. alpha:1];
    [self.view addSubview:addStatusBar];
    [self.navigationController.navigationBar addSubview:addStatusBar];

此外,还需要将子视图添加到导航控制器导航栏的子视图中。我将子视图的背景色设置为紫色,但您可以更改它。

这仅适用于rootViewController。对于所有视图控制器,在应用程序级别进行设置怎么样?@user623396,对于设置状态栏的颜色,(通过这种方式,还有其他方法进行设置)我只是在状态栏顶部添加一个子视图,其中包含坐标和大小。它在视图控制器级别也可以工作,但是您必须访问视图而不是根视图控制器。如果您想更改不同视图中状态栏的颜色,使其具有不同的状态栏颜色,则可能会出现这种情况。我已经修改了相同的代码,以便在后期编辑中在视图控制器级别工作。如果这是您想要的或需要更多帮助,请告诉我。@XCode\u Monkey谢谢您的回复。问题是,事实上,添加这样的视图会将其放置在导航栏下,而不是屏幕顶部。因此,您使用的是导航控制器。正在尝试设置与导航栏不同的状态栏颜色吗?完全正确。我做到这一点的唯一方法是在导航栏上设置背景图像。使用所需颜色绘制的前20个(或视网膜上的40个)像素。但这不是最灵活的解决方案。这仅适用于rootViewController。对于所有视图控制器,在应用程序级别进行设置怎么样?@user623396,对于设置状态栏的颜色,(通过这种方式,还有其他方法进行设置)我只是在状态栏顶部添加一个子视图,其中包含坐标和大小。它在视图控制器级别也可以工作,但是您必须访问视图而不是根视图控制器。如果您想更改不同视图中状态栏的颜色,使其具有不同的状态栏颜色,则可能会出现这种情况。我已经修改了相同的代码,以便在后期编辑中在视图控制器级别工作。如果这是您想要的或需要更多帮助,请告诉我。@XCode\u Monkey谢谢您的回复。问题是,事实上,添加这样的视图会将其放置在导航栏下,而不是屏幕顶部。因此,您使用的是导航控制器。正在尝试设置与导航栏不同的状态栏颜色吗?完全正确。我做到这一点的唯一方法是在导航栏上设置背景图像。使用所需颜色绘制的前20个(或视网膜上的40个)像素。但这不是最灵活的解决方案。