在呈现视图控制器后更改iOS状态栏颜色或导航栏颜色?

时间:2014-11-26 21:43:52

标签: ios objective-c iphone status

所以我使用第三方api,具体来说,这个: https://github.com/twitchtv/twitch-ios-plugin-bin

这个API的作用基本上就是让我做这个电话:

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

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

我没有看到任何改变Twitch来源的方法,所以我一直坚持下去。

但是,我的应用程序采用深色配色方案,而Twitch的popover在顶部看起来像导航栏,但它是白色的(默认Apple颜色)。由于我的配色方案很暗,我的状态栏是白色的。因此,当Twitch叠加层弹出时,会使状态栏不合理。

有两个简单的解决方案:

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

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

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

但没有骰子。

我也尝试过:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

收效甚微。

如何在发生此转换时将状态栏设为黑色,或者让新控制器的栏变暗?

2 个答案:

答案 0 :(得分:1)

我试过以下解决方案正在为我工​​作。

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

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

这会使应用程序中的状态栏变黑。

答案 1 :(得分:0)

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

  

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

     

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];

     

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

希望它能奏效。