是否可以将状态栏文本(前景)颜色更改为任意颜色(即不是黑色或白色)?

时间:2014-04-30 08:42:35

标签: ios colors ios7 statusbar

有谁知道如何更改状态栏文字颜色?

我希望 text 的颜色为橙色。

我不是在谈论常规的黑色或白色

`UIStatusBarStyleLightContent`; or `UIStatusBarStyleBlackOpaque`; or whatever. 

2 个答案:

答案 0 :(得分:8)

没有记录方式文本颜色更改为橙​​色。但是,它确实是可能的,因为我只是尝试了它并且它起作用了。

免责声明:这是所有未记录的领土......当您将其提交到应用商店时,它可能不会被批准。但是,你可能很幸运......

在iOS 7中,您可以这样做:

/// sets the status bar text color. returns YES on success.
/// currently, this only
/// works in iOS 7. It uses undocumented, inofficial APIs.
BOOL setStatusBarColor(UIColor *color)
{
    id statusBarWindow = [[UIApplication sharedApplication] valueForKey:@"statusBarWindow"];
    id statusBar = [statusBarWindow valueForKey:@"statusBar"];

    SEL setForegroundColor_sel = NSSelectorFromString(@"setForegroundColor:");
    if([statusBar respondsToSelector:setForegroundColor_sel]) {
        // iOS 7+
        [statusBar performSelector:setForegroundColor_sel withObject:color];
        return YES;
    } else {
        return NO;
    }
}
在iOS5和iOS6中也可能是这样,但我还没有尝试过,因为它还有很多工作要做。但是我找到了一种感兴趣的方法(在iOS 5和iOS 6中可用)。类UIStatusBarItemView有一个名为-textColorForStyle:的实例方法(它接受一个整数并返回一个对象)。您可能可以对其进行修补以返回您喜欢的任何颜色。

答案 1 :(得分:3)

您无法将其更改为橙色。

黑色白色是目前唯一可用的状态栏内容/特色颜色。

Apple UI指南提到不要创建自定义状态栏

状态栏中内容/文字的默认颜色为黑色,如果状态栏后面的内容很暗,这可能会导致状态栏变得不可读。

为了解决此问题,您可以设置应用程序和/或视图的UIStatusBarStyleUIStatusBarStyleLightContent将状态栏中内容的颜色更改为白色;或者,UIStatusBarStyleDefault将状态栏内容的颜色设置为黑色。

enter image description here