添加
application.statusBarStyle = .lightContent
Run Code Online (Sandbox Code Playgroud)
到我的AppDelegate的didFinishLaunchingWithOptions方法也没有添加
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
Run Code Online (Sandbox Code Playgroud)
到VC不再适用于iOS12/Xcode10
有任何想法吗?
mat*_*att 47
这与iOS 12无关.你只是规则错了.
在导航控制器的情况下,状态栏的颜色不是由视图控制器确定的preferredStatusBarStyle.
令人惊讶的是,导航栏确定了它barStyle.要获得光状态栏文本,请说(在视图控制器中):
self.navigationController?.navigationBar.barStyle = .black
Run Code Online (Sandbox Code Playgroud)
很难相信,但却是如此.多年前我直接从Apple获得了这些信息.
您还可以在故事板中执行此设置.
例!导航栏的酒吧风格是.default:
导航栏的酒吧风格是.black:
Oli*_*ver 16
如果为每个View Controller选择相同的状态栏颜色:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Run Code Online (Sandbox Code Playgroud)
将此添加到您的Info.plist中,然后根据需要的颜色从Project-> Targets-> Status Bar Style设置状态栏颜色。
另一方面,在您的情况下,您有一个嵌入在视图控制器中的导航控制器。因此,您要为每个页面使用不同的状态栏颜色。
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
将其添加到您的Info.plist。然后,为NavigationController创建一个自定义类。之后,您可以实现该方法:
class LightContentNavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Run Code Online (Sandbox Code Playgroud)
而已!请告诉我这是否有用!
如果 Matt 的答案不适合您,请尝试在展示 viewController 之前添加这行代码。
viewController.modalPresentationCapturesStatusBarAppearance = true
我遇到了一个错误,将 modalPresentationStyle 设置为 overFullScreen 不会将状态栏控件提供给所呈现的视图控制器或导航控制器。
| 归档时间: |
|
| 查看次数: |
6090 次 |
| 最近记录: |