Swift 3 - 这将在 UINavigationController 中使用控制器 . 在控制器中添加此代码 .
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
1)If you need the status bar at the launch screen or in other places, where you can't control it (not in view controllers, but rather some system controlled elements/moments like Launch Screen) 您转到项目设置
2) if you have a controller inside a navigation controller 您可以在界面构建器中更改它,如下所示:
3) If you have the controller alone that needs to have it's own status bar style and it's not embedded in some container structure as a UINavigationController
在控制器的代码中设置状态栏样式:
12
只需两个步骤如下:
Step 1:
在 project target 的“信息”选项卡下,添加行:
UIViewControllerBasedStatusBarAppearance ,设定值 NO .
30 回答
这适用于2013年9月18日发布的Golden Master iOS 7和Xcode 5 GM种子和iOS7 SDK(至少隐藏了导航控制器):
在
Info.plist
中将the UIViewControllerBasedStatusBarAppearance
设置为NO
.在
ViewDidLoad
方法或任何地方,您要在哪里更改状态栏样式:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
You dont need to do any code for this
您需要在info.plist中添加"View controller-based status bar appearance"键,如下所示:
并将其值类型设置为布尔值,将值设置为NO . 然后单击项目设置,然后单击“常规”选项卡并在“部署信息”下将首选状态栏样式设置为.Light,如下所示:
而已 .
注意:大多数upvoted答案不适用于iOS 7/8
在Info.plist中,将“查看基于控制器的状态栏外观”设置为NO
在AppDelegate中添加
至
此解决方案适用于iOS 7/8
这些都不适合我,所以这是一个有效的解决方案......
在
Info.plist
中,添加一行:UIViewControllerBasedStatusBarAppearance
,并设置值NO
.然后在
didFinishLaunchingWithOptions
中的AppDelegate中添加以下行:只是打电话
在里面
我的
AppDelegate
方法在iOS7中对我很有用 .完成这项工作的关键是只有全屏视图控制器才能决定状态栏的样式 .
如果您正在使用导航控制器并希望在每个视图控制器的基础上控制状态栏,您将需要子类化UINavigationController并实现preferredStatusBarStyle,以便它返回topViewController的首选项 .
确保将故事板场景中的类引用从UINavigationController更改为子类(例如下面示例中的MyNavigationController) .
(以下适用于我 . 如果您的应用程序是基于TabBar的,您将希望通过继承UITabBarController来做类似的事情,但我还没有尝试过) .
为Xcode GM Seed更新的答案:
在
Info.plist
把View controller-based status bar appearance
作为NO
在项目中,设置:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
我做了一些不同的事情,它对我有用 .
没有代码更改,我确实配置了我的.plist文件:
查看基于控制器的状态栏外观> NO
状态栏样式> UIStatusBarStyleLightContent(简单字符串)
我希望它有所帮助 .
编辑
对于每个视图控制器,我将故事板中的“状态栏”的模拟度量属性从“推断”更改为“轻量级内容”
总结一下,编辑项目
Info.plist
并添加:View controller-based status bar appearance
:NO
Status bar style
:Opaque black style
或者如果你有原始键/值plist
UIViewControllerBasedStatusBarAppearance
:NO
UIStatusBarStyle
:Opaque black style
在.plist文件中将
UIViewControllerBasedStatusBarAppearance
设置为YES
.在
viewDidLoad
做[self setNeedsStatusBarAppearanceUpdate];
添加以下方法:
Note :这不适用于
UINavigationController
内的控制器,请参阅Tyson's comment below :)Swift 3 - 这将在
UINavigationController
中使用控制器 . 在控制器中添加此代码 .对我来说,在其他答案(以及其他来源/文档)中使用所有内容时没有任何反应 . 帮助是在XIB中将导航栏样式设置为“黑色” . 这将文本更改为白色而没有任何代码 .
在info.plist中设置字段值NO View controller-based status bar appearance 并在目标>常规设置中设置 statusbar 样式指示灯 .
如果您仍希望将info.plist中的
View controller-based status bar appearance
设置为YES,这意味着您可以更改每个视图控制器的状态栏,请在ViewDidLoad的状态栏中使用以下白色文本:Simply In Appdelegate
如果您有通过Interface Builder创建的嵌入式导航控制器,请务必在管理导航控制器的类中设置以下内容:
这应该就是你所需要的 .
无需额外做一些,只需在viewController中编写此代码并获取状态栏颜色为白色
You can do this without writing any line of code! 执行以下操作,使整个应用程序的状态栏文本颜色为白色
在你 project plist 文件:
状态栏样式:
Transparent black style (alpha of 0.5)
查看基于控制器的状态栏外观:
NO
状态栏最初隐藏:
NO
对于iOS 7应用程序,我在Swift项目中使用Xcode 6 beta 5 .
这是我做的,它的工作原理:
info.plist中:
在Swift 3中只需2步即可轻松实现 . 转到info.plist并将密钥
View controller-based status bar appearance
更改为"NO" . 然后在Appdelegate中,在didfinishlaunchingwithoptions方法中添加这一行这在iOS 7 UI Transition Guide中有记录,您需要Apple开发人员ID才能直接访问 . 相关摘录:
也可能感兴趣:
我绝对建议您浏览一下该文档,您也可以使用Apple开发者ID访问该文档 .
嗯,这对我来说真的像一块蛋糕 .
转到您应用的
info.plist
.设置
View controller-based status bar appearance
至NO
设置
Status bar style
至UIStatusBarStyleLightContent
然后转到您的应用程序代理并粘贴以下代码,您可以在其中设置Windows的RootViewController .
答对了 . 它对我有用 .
iOS 7允许各个视图控制器确定状态栏的外观,如Apple开发人员文档所述:
全局设置状态栏外观分为两步 .
首先,您需要告诉iOS您不希望在逐个视图的基础上设置状态栏外观 .
然后你需要负责并实际设置新的全局状态栏样式 .
要禁用逐个视图状态栏控件,您需要在
Info.plist
中设置View controller-based status bar appearance
属性 .打开Project Navigator并为iOS应用程序选择项目,然后选择Info选项卡 .
将鼠标悬停在一行上,然后点击显示的加号,将新属性添加到
.plist
.在Key字段中输入
View controller-based status bar appearance
,然后确保Type字段设置为Boolean
. 最后,在“值”字段中输入NO
.要为状态栏设置全局样式,请在“信息”选项卡下添加另一个属性,其键为
Status bar style
,类型为String
,值为Opaque black style
.这是一篇博文,其中包含更多细节和一些示例代码:
http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
如果你想要与Swift相同的结果,你可以在你的AppDelegate.swift文件中使用这个代码:
状态栏的文本将为白色:-)!
在AppDelegate.m中,添加以下内容 .
在Plist文件中,将“查看基于控制器的状态栏外观”设置为NO .
如果您的UIViewController在UINavigationController中,您将必须设置BarStyle:
原始答案在这里
https://devforums.apple.com/message/844264#844264
我认为所有的答案并没有真正指出问题,因为它们都在特定的情况下工作 . 但如果您需要涵盖所有案例,请遵循以下几点:
根据您需要的状态栏灯样式,您应始终牢记以下3点:
1)If you need the status bar at the launch screen or in other places, where you can't control it (not in view controllers, but rather some system controlled elements/moments like Launch Screen) 您转到项目设置
2) if you have a controller inside a navigation controller 您可以在界面构建器中更改它,如下所示:
a)选择导航控制器的导航栏
b)然后将导航栏的样式设置为“黑色”,因为这意味着您的状态栏下方会显示“黑色” - >深色背景,因此会将状态栏设置为白色
或者在代码中执行如下操作
3) If you have the controller alone that needs to have it's own status bar style and it's not embedded in some container structure as a UINavigationController
在控制器的代码中设置状态栏样式:
只需两个步骤如下:
Step 1:
在
project target
的“信息”选项卡下,添加行:UIViewControllerBasedStatusBarAppearance
,设定值NO
.Step 2:
在项目
AppDelegate.m
:让我给你一个完整的答案 . 更改状态栏文本颜色非常容易,但在iOS 7中专门针对新手来说有点混乱 .
如果您试图通过选择视图控制器并转到右侧的模拟指标,在Storyboard中将颜色从黑色更改为白色,则它将无法工作,我不知道为什么 . 它应该通过改变这样,但任何方式 .
其次,您不会在plist中找到UIViewControllerBasedStatusBarAppearance属性,但默认情况下它不在那里 . 您必须通过单击按钮自己添加它,然后将其设置为NO .
ios 7状态栏文本颜色
最后,您必须转到AppDelegate.m文件并在didFinishLaunchingWithOptions方法中添加以下内容,添加以下行:
这会将所有视图控制器的颜色更改为白色 . 希望这可以帮助!
或者,您可以选择退出基于视图控制器的状态栏外观:
在
Info.plist
中将View controller-based status bar appearance
设为NO
.致电
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
注意:此方法已在iOS9中弃用 . 使用
preferredStatusBarStyle
相反,UIViewController . (见Apple Developer Library)转到
Project
- >Target
,然后将
Status Bar Style
设置为Light
. 它使状态栏从启动屏幕变为白色 .然后在
Info.plist
中将View controller-based status bar appearance
设置为NO
.