当前位置: 首页 > 知识库问答 >
问题:

iOS 7及更高版本:设置每个视图控制器的状态栏样式

李振国
2023-03-14


我尝试了很多方法来设置状态栏样式(默认或lightcontent),但无法在每个视图控制器的基础上使其工作。我只能为整个应用设置状态栏样式。

有人有提示吗?

我尝试了UIViewControllerBasedStatusBarAppearance

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
}

但这些方法不起作用。

共有3个答案

卜泓
2023-03-14

编辑:此解决方案在iOS9上不建议使用。请从其他答案中选择一个。

UIViewControllerBasedStatusBarAppearance设置为NO时,我可以使用以下方法将样式设置为白色文本:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;

这是因为此样式的文本颜色在iOS6及以下为白色。

更新:根据@jowie,您可以在iOS8上尝试:

[UIApplication sharedApplication].statusBarStyle = UIBarStyleBlack;
姬正文
2023-03-14

如果视图控制器位于独立的UINavigationController中,而不是基于情节提要的UINavigationController的一部分,那么最重要的是,所有方法都会失败。我遇到了这种情况,为了将状态栏设置为light style,我使用了以下方法

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

这对我来说非常有效。

公西培
2023-03-14

你试过这个吗?

>

  • 将信息中的“查看基于控制器的状态栏外观”(UIViewControllerBasedStatusBarAppearance)设置为YES。普利斯特。(YES是默认值,因此您也可以将该值从plist中删除。)

    在viewDidLoad方法中,调用[self-setNeedsStatusBarAppearanceUpdate]

    实现preferredStatusBarStyle,返回此视图控制器所需的状态栏样式。

    - (UIStatusBarStyle) preferredStatusBarStyle { 
        return UIStatusBarStyleLightContent; 
    }
    

  •  类似资料:
    • 我已经看到了这些问题的答案: 在iOS 7中,状态栏显示在我的视图边界上 状态栏和导航栏出现在我的视图的边界iOS7 新的iOS 7状态栏在Xcode 5编译的应用程序中保留了20px的范围 iOS 7状态栏在iPhone应用程序中恢复为iOS 6默认样式? 然而,这些答案似乎都不适合我。我试图以“黑色不透明”样式显示状态栏,正如我在中设置的那样。 有没有办法让应用程序继续工作,就好像窗口中没有状

    • 我正在尝试修改状态栏的外观(将文本设置为白色/将样式设置为“灯光”)。通过将其添加到AppDelegate中,我成功地设置了背景色。swift文件: 但是,当我去更改状态栏的文本样式时,甚至在一般情况下更改此样式 我还试图通过nfo.plist修改状态栏,但是没有“基于视图控制器的状态栏外观”字段(见第二张图片)。此外,状态栏样式选项下没有“轻”样式选项(见下图):

    • 标题说明了一切。或者我在理解sdk时有一些非常错误的地方,或者苹果的sdk有一些非常错误的地方。 设置(info.plist)基于视图控制器的状态时..=是的,我可以通过调用setNeedsStatusBarEtc来隐藏我的状态栏动画等等。。。但是,我不能改变我喜欢的风格。当我将其设置为“否”时,我可以更改样式,但不能更改所有其他内容。。我该怎么办?怎么了?请帮帮我! 当基于控制器的状态...=Y

    • 我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码 这就像预期的那样。 然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。

    • 我有一个应用程序,基于视图控制器的状态栏外观设置为。我的一些视图是深色的,一些视图是浅色的,应用程序有一个相当复杂的视图控制器层次结构,但它可以完美地将适当的方法子类化和重写,并与模式视图(捕捉呈现样式等)相结合。 然而,我需要一种全局的方式来查看顶部的特定项目(在状态栏后面,在我的应用程序边界内),就像顶部的个人热点/GarageBand录音/通话等栏一样。由于栏的背景颜色,我想在显示栏时覆盖状

    • 我有一个视图控制器,这是导航控制器的rootVc。 我需要为rootview控制器隐藏导航栏,因此我使用以下方法来隐藏它并使其重新出现。 我基本上是在rootVc中隐藏导航栏,并为所有其他视图控制器显示它。 但当我移除导航栏时,我看到我的内容正在状态栏下扩展 有办法解决这个问题吗?