如何设置状态栏的文本颜色(白色和黑色除外)

时间:2014-05-07 08:32:20

标签: ios objective-c uistatusbar

注意:我不想将状态栏颜色或文字颜色更改为白色或黑色。我知道怎么做。

我想将状态栏文本颜色更改为绿色。

黑色

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

但是我想知道我可以设置一些其他颜色吗?真的,我想要这个,因为我的所有应用程序设计都变得丑陋,白色和黑色;(

我知道这是不可能的,但仍然在这里问,有人可能知道是否有办法。

现在,如果没有办法,我计划的是创建自定义视图并将我在状态栏中看到的所有内容放到我的视图中,如下所示,但是从黑到绿。

enter image description here

有什么方法可以收集状态栏的所有信息吗?

我将设法根据通知刷新视图,但我想找到可以收集状态栏的所有内容的方式。

最重要的是,是否允许?


我想要的是如下。

enter image description here

3 个答案:

答案 0 :(得分:9)

在MidhunMP提供的链接中,我使用如下。

/// 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:[UIColor colorWithRed:235/255.0 green:116/255.0 blue:35/255.0 alpha:1.0]];
        return YES;
    } else {
        return NO;
    }
}

Reference


Apple批准任何颜色作为状态栏颜色...... Yayyyy ......终于....

我在2-3个应用程序中使用了上述代码,Apple已批准。

在更新应用时,请在笔记中提及您正在使用上面的代码(将代码粘贴到备注中,这非常重要。让Apple知道我们正在使用的代码)。当我们向Apple展示代码时,他们知道虽然我们正在访问私有api,但我们并没有伤害任何东西。因此,根据我的要求,他们在应用商店中批准了2个应用。应用为BaitBiteLovely Collectibles& Q8Rent

答案 1 :(得分:0)

为避免内存泄漏警告,您可以在Fahim Parkar的答案中替换这段代码:

[statusBar performSelector:setForegroundColor_sel withObject:[UIColor colorWithRed:235/255.0 green:116/255.0 blue:35/255.0 alpha:1.0]];

使用此代码:

UIColor* color = [UIColor colorWithRed:235/255.0 green:116/255.0 blue:35/255.0 alpha:1.0];
NSInvocation* const invocation = [NSInvocation invocationWithMethodSignature:[[statusBar class] instanceMethodSignatureForSelector:setForegroundColor_sel]];
invocation.target = statusBar;
invocation.selector = setForegroundColor_sel;
[invocation setArgument:&color atIndex:2];

答案 2 :(得分:0)

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [[UIApplication sharedApplication] setStatusBarHidden:false];
    UIView *statusBar=[[UIApplication sharedApplication] valueForKey:@"statusBar"];
    statusBar.backgroundColor = [UIColor redColor];

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];



    return YES;
}