【问题标题】:Changing iOS status bar color or navigation bar color after presenting a view controller?呈现视图控制器后更改 iOS 状态栏颜色或导航栏颜色?
【发布时间】:2014-11-26 21:43:52
【问题描述】:

所以我正在使用第三方 api,特别是这个: https://github.com/twitchtv/twitch-ios-plugin-bin

这个 API 所做的基本上就是让我进行这个调用:

[[TwitchKit sharedPlugin] presentStreamForChannelNamed:channel.user mode:TKStreamPresentationModeRemainInApp];

其中 channel.user 是一个带有 Twitch 频道名称的 NSString,一个新视图会弹出我当前请求的视频流。

我看不出有什么办法可以改变 Twitch 的源代码,所以我只能坚持到底。​​p>

但是,我的应用程序使用深色方案,并且 Twitch 的弹出框顶部看起来像一个导航栏,但它是白色的(默认 Apple 颜色)。由于我的配色方案是深色的,所以我的状态栏是白色的。所以当 Twitch 叠加层弹出时,会导致状态栏不合理。

有两个简单的解决方案:

  • 当 Twitch 的视图出现时,使状态栏变黑。
  • 让 Twitch 的导航栏变暗。

不幸的是,我似乎无法让其中任何一个工作。我在 presentStreamForChannel 调用后立即尝试了这个:

[self.presentedViewController.navigationController.navigationBar setBackgroundColor:[UIColor purpleColor]];

但没有骰子。

我也试过了:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

收效甚微。

当这种转换发生时,我怎样才能让状态栏变黑,或者让新控制器的栏变暗?

【问题讨论】:

  • 我认为您应该通过在 self.window.rootViewController 中循环视图控制器并检查任何 TwitchKit 导航控制器类来遍历您的应用程序视图控制器层次结构。然后尝试上述更改颜色方法。
  • 嗨@AshishP.,所以我开始认为这是时间问题?我这样做了:[[TwitchKit sharedPlugin] presentStreamForChannelNamed:channel.user mode:TKStreamPresentationModeRemainInApp]; NSArray *controllerArray = [[self navigationController] viewControllers]; for (UIViewController *controller in controllerArray) NSLog(@"%@",controller);而且 TwitchKit 控制器甚至不在堆栈中——我想我在实例化视图之前更改了状态栏。我该如何解决这个问题?
  • 在正在呈现的视图控制器的viewWillAppear: 中调用setStatusBarStyle... 怎么样?如果您可以访问它,那就是。

标签: ios objective-c iphone status


【解决方案1】:

我已经尝试了以下解决方案的演示。

转到您的 info.plist,添加属性“查看基于控制器的状态栏外观”并将其设置为“否”。

将以下代码添加到您的应用委托。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

这将使状态栏在整个应用程序中变黑。

【讨论】:

    【解决方案2】:

    你必须为导航栏设置bartintcolor,如果你想要黑色状态栏,设置窗口的背景颜色为黑色,设置状态栏样式为黑色半透明。

    [self.presentedViewController.navigationController.navigationBar setBarTintColor:[UIColor PurpleColor]];

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];

    [[[UIApplication sharedApplication] 窗口] setBackgroundColor:[UIColor blackColor]];

    希望它会起作用。

    【讨论】:

    • 不幸的是,这不起作用,没有可见的变化......另外,UIStatusBarStyleBlackTranslucent 已被贬低。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2014-02-08
    • 2017-03-26
    • 2017-02-17
    相关资源
    最近更新 更多