dav*_*ens 85 ios uistatusbar appdelegate swift xcode6
我正在尝试将我的Swift应用程序中的状态栏颜色更改为白色,但是我碰到了一堵砖墙.我有3个ViewControllers,每个都嵌入在NavigationController中(可能是问题吗?我已经尝试将代码放在NavigationController类中.)我在AppDelegate的didFinishLaunchingWithOptions中尝试了以下两段代码. .swift文件,但都没有工作.
application.statusBarStyle = .LightContent
Run Code Online (Sandbox Code Playgroud)
和
UIApplication.sharedApplication().statusBarStyle = .LightContent
Run Code Online (Sandbox Code Playgroud)
Docs关于它的所有内容都是UIBarButtonStyle是一个Int并且给了我这个enum片段,这对我来说并没有任何帮助.
enum UIStatusBarStyle : Int {
case Default
case LightContent
case BlackOpaque
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
Mic*_*lum 144
你有两个选择.
如果要继续手动设置状态栏的样式,请继续执行您正在执行的操作,但是您需要将以下键添加到info.plist文件中,其值为NO.
查看基于控制器的状态栏外观
或者,如果要继续使用基于视图控制器的状态栏外观,而不是设置应用程序的statusBarStyle,请覆盖preferredStatusBarStyle要为其指定状态栏样式的每个视图控制器中的属性.
斯威夫特3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特2
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Run Code Online (Sandbox Code Playgroud)
Mas*_*lko 143
Swift 3.0
在AppDelegate.swift didFinishLaunchingWithOptions中
UIApplication.shared.statusBarStyle = .lightContent
Run Code Online (Sandbox Code Playgroud)
的Info.plist
View controller-based status bar appearance -> NO
Run Code Online (Sandbox Code Playgroud)
Swift 2.2
在AppDelegate.swift didFinishLaunchingWithOptions中
UIApplication.sharedApplication().statusBarStyle = .LightContent
Run Code Online (Sandbox Code Playgroud)
的Info.plist
View controller-based status bar appearance -> NO
Run Code Online (Sandbox Code Playgroud)
小智 21
对于iOS9.x和Xcode7,只需将其放入AppDelegate.swift:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().barStyle = .Black
}
Run Code Online (Sandbox Code Playgroud)
这将自动将状态栏的样式转换.Lightcontent为UINavigationController中的所有视图控制器.
(另外,View controller-based status bar appearance从Info.plist中删除以抑制您可能也会看到的警告!)
Eri*_*der 15
在Swift 3中,状态栏样式已更改为UIViewController中的计算属性,您可以像这样覆盖:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent //or default
}
Run Code Online (Sandbox Code Playgroud)
Gui*_*uce 12
在iOS 9上,不推荐使用以下(setStatusBarStyle),如果你这样做,你会收到警告.
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
Run Code Online (Sandbox Code Playgroud)
如果您希望一次性更改所有statusBars,请尝试将以下内容添加到Info.plist中.这也会使您的启动屏幕状态栏变白.虽然上面的代码不会.
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Run Code Online (Sandbox Code Playgroud)
Con*_*nco 10
对我来说,除非我添加:
self.navigationController?.navigationBar.barStyle = .black;
Run Code Online (Sandbox Code Playgroud)
所以:
UIViewControllerBasedStatusBarAppearance于YES在.plistviewDidLoad电话中self.setNeedsStatusBarAppearanceUpdate();override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}navigationBar.barStyle如此最终
override var preferredStatusBarStyle: UIStatusBarStyle {
self.navigationController?.navigationBar.barStyle = .black;//or default
return .lightContent //or default
}
如果这不起作用,你可以尝试添加一个UINavigationController extension:
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
if let lastVC = self.viewControllers.last
{
return lastVC.preferredStatusBarStyle
}
return .default
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
奇怪,使用Swift 3.1和XC8.2.1,但以上所有都不起作用.
我做了什么,只是
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
}
Run Code Online (Sandbox Code Playgroud)
没有Plist,没有其他东西.HTH
| 归档时间: |
|
| 查看次数: |
57002 次 |
| 最近记录: |