【问题标题】:iOS 7 status bar backgroundiOS 7 状态栏背景
【发布时间】:2013-12-22 11:37:14
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c cocoa-touch ios7


    【解决方案1】:

    您需要在应用程序委托中添加一个子视图并根据自己的喜好更改颜色。这是位于applicationdidfinishLaunchingWithOptions中的代码示例

    - (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;
    }
    

    看看 cmets。您可以在addStatusBar.backGroundColor 中使用任何类型的颜色来匹配您需要的颜色。请注意,这里的红色只是产生黑色背景,将其更改为您需要的任何颜色。对于深灰色,将其替换为以下代码:

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

    编辑:

    要更改单个视图中的状态栏颜色,您只需在 ViewDidLoad 方法中插入以下代码(这将访问您要更改的视图)[super viewDidLoad]; 之后应该会更改状态栏的颜色就是你放置代码的那个视图。

    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,用于设置状态栏的颜色,(这种方式还有其他设置方式)我只是在状态栏的顶部添加一个子视图,带有坐标和大小.它在视图控制器级别的工作方式也相同,但您必须访问视图而不是 rootviewcontroller。如果您想将不同视图中状态栏的颜色更改为具有不同状态栏颜色,则可能是这种情况。我已经修改了相同的代码以在我的帖子编辑中在视图控制器级别工作。如果您正在寻找或需要更多帮助,请告诉我。
    • @XCode_Monkey 感谢您的回复。问题是,事实上,添加这样的视图会将其放置在导航栏下方,而不是屏幕顶部。
    • 所以你正在使用导航控制器。是否尝试设置与导航栏不同的状态栏颜色?
    • 没错。我做到这一点的唯一方法是在导航栏上设置背景图像。前 20 个(或视网膜上的 40 个)像素涂有所需的颜色。虽然不是最灵活的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2018-04-10
    • 2016-10-16
    相关资源
    最近更新 更多