iOS:不使用UINavigationController设置状态栏颜色

iOS:不使用UINavigationController设置状态栏颜色,ios,cocoa-touch,uinavigationbar,Ios,Cocoa Touch,Uinavigationbar,在我的iOS应用程序中,我使用的是不带UINavigationController的UINavigationBar。我怎样才能将应用程序状态栏的颜色设置为与自定义蓝色的UINavigationBar的颜色相匹配?已尝试但不起作用: 在plist中设置UIViewControllerBasedStatusBarAppearance属性没有任何效果 设置我的UINavigationBar的BartinColor不会影响状态栏,可能是因为它不由UINavigationViewController管理

在我的iOS应用程序中,我使用的是不带UINavigationController的UINavigationBar。我怎样才能将应用程序状态栏的颜色设置为与自定义蓝色的UINavigationBar的颜色相匹配?已尝试但不起作用:

  • 在plist中设置
    UIViewControllerBasedStatusBarAppearance
    属性没有任何效果
  • 设置我的UINavigationBar的
    BartinColor
    不会影响状态栏,可能是因为它不由UINavigationViewController管理
  • 设置
    UINavigationBar.appearance().BartinColor
    也不起作用

有什么建议吗?

将此方法添加到视图控制器:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent; // or UIStatusBarStyleDefault
}

好吧,多亏了这个问题的公认答案,我才算明白:

在viewcontroller中采用UINavigationBarDelegate协议并实现以下方法(Swift):


显然,所有以这种方式定位的导航栏都会将其BarIntColor扩展到状态栏。

感谢您的回答,但请阅读我的问题,我想匹配我的UINavigationBar的颜色,在本例中,这是一种自定义的蓝色。状态栏只有两种变体。匹配到底是什么意思?如果在UINavigationController管理UINavigationBar时设置其barTintColor,则状态栏将获得相同的颜色。我的问题是:当您单独使用UINavigationBar时,这不会发生……这对我来说很有效-请记住,您需要确保您的视图控制器被设置为
UINavigationBar
的代理,或者在
viewDidLoad
中显式地在代码中使用:
myNavigationBar.delegate=self
,或者使用界面构建器并将导航栏的代理出口连接到视图控制器
func positionForBar(bar: UIBarPositioning) -> UIBarPosition {
    return UIBarPosition.TopAttached
}