ios - 带导航栏的 TabBarController 上的彩色状态栏不起作用

标签 ios objective-c statusbar

我在这里阅读了很多帖子并尝试了提到的大部分选项,但没有一个能解决我的问题。我有一个基于选项卡栏 Controller 的应用程序。每个选项卡都是一个顶部带有导航栏的 UIViewController。

将此代码添加到 AppDelegate 会给我一个带有白色文本的橙色导航栏,以及一个带有黑色文本的白色状态栏。

[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

阅读各个页面上的答案建议将以下内容添加到 View Controller 中:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

然后在 View Did Load 中调用它:

[self setNeedsStatusBarAppearanceUpdate];

这让我得到了一个带有白色文本的白色状态栏,我现在如何让状态栏变成橙色以匹配我的导航栏?

此处提到的解决方案https://stackoverflow.com/a/19513714/505457对于那些使用导航 Controller 的人来说不起作用,我想那是因为我的主 Controller 是一个标签栏 Controller 。

有人遇到过这个吗?提前感谢您提出的任何意见/建议。如果需要,我可以提供一个示例应用程序,但使用选项卡栏模板构建一个应用程序可能同样快速,添加一个导航栏,然后粘贴我的代码示例。

等 ionic

最佳答案

您可以通过名称找到状态栏 UIVIew 并对其进行着色。将此方法添加到您的 AppDelegate.m 并从 didFinishLaunchingWithOptions 调用它:

- (void)setStatusBarBackgroundColor:(UIColor *)color {

    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = color;
    }
}

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

 ...   

    [self setStatusBarBackgroundColor:[UIColor orangeColor]];

 ...

}

注意:商店中有使用此方法的应用程序。所以苹果的HIG政策没问题。

关于ios - 带导航栏的 TabBarController 上的彩色状态栏不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37014523/

相关文章:

iPhone 开发 : Animating PNG Sequences

Android:检测到用户打开状态栏

java - setFlags 后工具栏与状态栏重叠

带有 "autoplay muted playsinline"的 iOS 10 视频标签停止背景音乐 (spotify)

ios - 如何在请求用户位置时检测用户何时按下 "allow"

iphone - NIB 相关的崩溃在 iPad 但不是 iPhone

objective-c - 我可以收到发送 nil objects 消息的警告吗?

ios - 如何以特定格式获取一年中的所有月份

ios - 无法播放系统声音 iOS 7

user-interface - wxPython:如何在状态栏中放置额外的小部件?