【问题标题】:Status Bar Text Color iOS 7 [duplicate]状态栏文本颜色iOS 7 [重复]
【发布时间】:2013-10-04 14:20:08
【问题描述】:

我无法更改 iOS 7 SDK 状态栏中的文本颜色。目前它是黑色的,我希望它对于故事板中的所有视图控制器都是白色的。

我在 StackOverflow 上看到过几个问题,例如 THIS、THIS 和 THIS,但它们并没有太大帮助。也可能是因为我无法在我的 plist 文件中找到 UIViewControllerBasedStatusBarAppearance 为 YES。

谁能告诉我将故事板中所有视图控制器的状态栏文本颜色设置为白色的正确方法?提前致谢!

【问题讨论】:

    标签: ios objective-c storyboard ios7 uistoryboard


    【解决方案1】:

    让我给你一个完整的回答你的问题。更改状态栏文本颜色非常简单,但在 iOS 7 中,这对于新手来说有点混乱。

    如果您尝试通过选择视图控制器并转到右侧的模拟度量来将 StoryBoard 中的颜色从黑色更改为白色,它不会起作用,我不知道为什么。它应该通过这样的改变来工作,但无论如何。

    其次,您不会在 plist 中找到 UIViewControllerBasedStatusBarAppearance 属性,但默认情况下它不存在。您必须通过单击 + 按钮自行添加,然后将其设置为 NO。

    最后,您必须转到您的 AppDelegate.m 文件并在 didFinishLaunchingWithOptions 方法中添加以下内容,添加以下行:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    

    这会将所有视图控制器的颜色更改为白色。希望这会有所帮助!

    【讨论】:

    • KC.,我已经按照你写的做了,一切正常。但是当我在我的应用程序中打开例如相机胶卷时,它会将状态栏文本颜色设置为黑色,并且当我在我的应用程序中关闭相机胶卷状态栏时,它会显示黑色文本。我试图通过在我的视图控制器中使用 -(UIStatusBarStyle)preferredStatusBarStyle 来设置颜色。但由于未知原因,它没有被调用。目前我还没有找到解决方案。
    • 我和奥列格有同样的问题。似乎苹果图像选择器在以这种方式处理它时会覆盖默认值,并在您完成后拒绝切换回来。
    • 当我在 iPad 上打开图像选择器弹出框时,我看到了同样的情况。假设有一个导航栏,它也会混淆我的视图坐标。修复只是在弹出窗口关闭后重置所有内容。
    • 在您的视图控制器中使用此导航栏委托方法,该方法正在呈现图像选择器- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; } }
    • 我也看到了与@Oleg 和@MattCheetham 相同的问题。使用 Apple 图像选择器时,状态栏会完全变黑并保持不变,即使在图像选择器关闭后也是如此。此处列出的修复不会影响这一点,UIViewController 上的类别也不会覆盖 -(UIStatusBarStyle)preferredStatusBarStyle
    【解决方案2】:

    如果您要查找UIViewControllerBasedStatusBarAppearance,则需要单击当您将鼠标悬停在 plist 文件中的根元素上时出现的小加号。

    完成此操作后,将出现一个新行 - 从下拉列表中选择“查看基于控制器的状态栏外观”并将 NO 设置为其值。 (该友好名称在内部声明为UIViewControllerBasedStatusBarAppearance)

    接下来,在您的应用委托中调用以下方法应将所有视图控制器的状态栏颜色设置为白色:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    

    【讨论】:

      【解决方案3】:

      在 plist 中将UIViewControllerBasedStatusBarAppearance 设置为 YES

      在viewDidLoad 做一个[self setNeedsStatusBarAppearanceUpdate];

      添加如下方法:

      -(UIStatusBarStyle)preferredStatusBarStyle{ 
          return UIStatusBarStyleLightContent; 
      }
      

      【讨论】:

      • 奇怪的是以前的答案对我有用。不管怎样,谢谢!这对我有用。顺便说一句,如果这仅在 viewdidload 上更新,因此我必须在每个视图中调用此更新?
      • 这对我有用,但 KC 的解决方案不起作用,故事板方法也不起作用
      • 如果你有不同亮度的屏幕,这就是有效的方法
      【解决方案4】:

      默认是YES,所以你看不到。你需要添加

      UIViewControllerBasedStatusBarAppearance
      

      到您的 plist 并将其设置为 NO。

      然后就可以调用了

      [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
      

      【讨论】:

      • 'setStatusBarStyle:' 已弃用:在 iOS 9.0 中首次弃用 - 使用 -[UIViewController preferredStatusBarStyle]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      相关资源
      最近更新 更多