我的应用程序有一个深色背景,但在iOS 7中,状态栏变得透明。所以我看不到任何东西,只有角落里的绿色电池指示灯。我怎样才能把状态栏的文字颜色改为白色,就像在主屏幕上那样?
1.在.plist文件中把UIViewControllerBasedStatusBarAppearance
设为YES
。
2.2.在viewDidLoad
中做一个[self setNeedsStatusBarAppearanceUpdate];
。
3.添加以下方法。
- (UIStatusBarStyle)preferredStatusBarStyle
{
返回UIStatusBarStyleLightContent。
}
注意。这对UINavigationController
内的控制器不起作用,请看Tyson'下面的评论 :)
Swift 3 - 这将适用于`UINavigationController'内的控制器。在你的控制器中加入这段代码。
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5和SwiftUI
为SwiftUI创建一个名为HostingController.swift
的新swift文件
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
然后修改SceneDelegate.swift
中的以下几行代码
window.rootViewController = UIHostingController(rootView: ContentView())
改为
window.rootViewController = HostingController(rootView: ContentView())
这在iOS 7 UI过渡指南中有记载,你需要一个苹果开发者ID才能直接访问。相关的节选。
因为状态栏是透明的,它后面的视图会显示出来。[...] 使用
UIStatusBarStyle
常量来指定状态栏的内容应该是深色还是浅色。
UIStatusBarStyleDefault
显示深色内容。[...]
UIStatusBarStyleLightContent
显示浅色内容。当状态栏后面有深色内容时使用。
也可能感兴趣。
在iOS 7中,你可以从一个单独的vew控制器控制状态栏的样式,并在应用运行时改变它。要选择这种行为,请将
UIViewControllerBasedStatusBarAppearance
键添加到应用程序的Info.plist
文件中,并将其值改为YES
。
我肯定会推荐你看一下这个文件,你可以用你的苹果开发者ID访问它。
这似乎是Xcode和iOS 7的当前版本的一个问题。
苹果开发者论坛上的一些相关内容在[在"iOS 7 Beta Livability"中搜索UIStatusBarStyleLightContent][1]*(目前有32篇文章)。
我遇到了它,想把它设置为轻量级版本。
(这只是对Aaron'的回答的跟进)。
[1]: https://devforums.apple.com/search.jspa?q=UIStatusBarStyleLightContent&resultTypes=MESSAGE& peopleEnabled=true& communityID=2345& dateRange=last90days& username=& numResults=15