Ole*_*huk 975 statusbar textcolor ios uistatusbar ios7
我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,只有角落里的绿色电池指示灯.如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?
Pet*_*mer 1362
在.plist文件中设置UIViewControllerBasedStatusBarAppearanceto YES.
在viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];
添加以下方法:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)注意:这不适用于内部控制器UINavigationController,请参阅Tyson的评论 :)
Swift 3 - 这将控制内部UINavigationController.在控制器中添加此代码.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
wil*_*tgh 844
或者,您可以选择退出基于视图控制器的状态栏外观:
View controller-based status bar appearance到NO你Info.plist.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];注意:此方法已在iOS9中弃用.请改用preferredStatusBarStyleUIViewController.(参见Apple Developer Library)
Luc*_*cas 434
您无需编写任何代码即可完成此操作!
执行以下操作以使状态栏文本颜色在整个应用程序中变为白色
在你的项目plist文件:
Transparent black style (alpha of 0.5)NONOPra*_*evu 240
注意:大多数upvoted答案不适用于iOS 7/8
在Info.plist中,将"查看基于控制器的状态栏外观"设置为NO
在AppDelegate中添加
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
至
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
Run Code Online (Sandbox Code Playgroud)
此解决方案适用于iOS 7/8
har*_*tin 111
对我来说,在其他答案(以及其他来源/文档)中使用所有内容时没有任何反应.有什么帮助是在XIB中将导航栏样式设置为"黑色".这将文本更改为白色而没有任何代码.

ste*_*k21 97
这些都不适合我,所以这是一个有效的解决方案......
在Info.plist,添加一行:
UIViewControllerBasedStatusBarAppearance,并设置值NO.
然后在AppDelegate中didFinishLaunchingWithOptions,添加以下行:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
Aji*_*til 62
你不需要为此做任何代码
您需要在info.plist中添加"查看基于控制器的状态栏外观"键,如下所示: 
并将其值类型设置为布尔值,将值设置为NO.然后点击项目设置,然后单击常规选项卡和下部署信息的最佳状态栏样式设置为.Light如下:
而已.
fol*_*lse 48
只需两步如下:
步骤1:
在" project target添加行"的"信息"选项卡下:
UIViewControllerBasedStatusBarAppearance,设定价值NO.
第2步:
在项目中AppDelegate.m:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
…
[application setStatusBarStyle:UIStatusBarStyleLightContent];
…
}
Run Code Online (Sandbox Code Playgroud)
Den*_*ovs 43
这适用于2013年9月18日发布的Golden Master iOS 7和Xcode 5 GM种子和iOS7 SDK(至少隐藏了导航控制器):
设置the UIViewControllerBasedStatusBarAppearance到NO在
Info.plist.
在ViewDidLoad方法或任何地方,您想在哪里更改状态栏样式:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Moh*_*lia 32
如果您的UIViewController在UINavigationController中,您将必须设置BarStyle:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
Run Code Online (Sandbox Code Playgroud)
原始答案在这里
https://devforums.apple.com/message/844264#844264
小智 29
如果您有通过Interface Builder创建的嵌入式导航控制器,请务必在管理导航控制器的类中设置以下内容:
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
这应该就是你所需要的.
neo*_* D1 22
在AppDelegate.m中,添加以下内容.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
Run Code Online (Sandbox Code Playgroud)
在Plist文件中,将"查看基于控制器的状态栏外观"设置为NO.
Sha*_*bal 20
嗯,这对我来说真是一块蛋糕.
转到您的应用程序info.plist.
View controller-based status bar appearance为NOStatus bar style为UIStatusBarStyleLightContent然后转到您的应用程序代理并粘贴以下代码,您可以在其中设置Windows的RootViewController.
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
[self.window.rootViewController.view addSubview:view];
}
Run Code Online (Sandbox Code Playgroud)
答对了.它对我有用.
Viv*_*wat 20
简单地在Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
Wan*_*hoi 20
转到Project- > Target,
然后设置View controller-based status bar appearance等于NOin Info.plist.
Jam*_*run 18
在Swift 3中只需2步即可轻松实现.转到info.plist并将密钥更改View controller-based status bar appearance为"NO".然后在Appdelegate中只需在didfinishlaunchingwithoptions方法中添加此行
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
Run Code Online (Sandbox Code Playgroud)
现在你应该在rootviewcontroller中覆盖这个属性,这已经在iOS9中被弃用了
这样做已经在iOS 9中被弃用了,应该在rootviewcontroller上执行此操作
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*arl 17
iOS 7允许各个视图控制器确定状态栏的外观,如Apple开发人员文档所述:
iOS 7使视图控制器能够在应用程序运行时调整状态栏的样式.动态更改状态栏样式的一种好方法是
preferredStatusBarStyle在动画块中实现和更新状态栏外观和调用setNeedsStatusBarAppearanceUpdate.
全局设置状态栏外观分为两步.
首先,您需要告诉iOS您不希望在逐个视图的基础上设置状态栏外观.
然后你需要负责并实际设置新的全局状态栏样式.
要禁用逐个视图状态栏控件,您需要设置View controller-based status bar appearance属性Info.plist.
打开Project Navigator并为iOS应用程序选择项目,然后选择Info选项卡.
将鼠标悬停在一行上,然后点击显示的加号,即可为您添加新属性.plist.
View controller-based status bar appearance在Key字段中输入,然后确保Type字段设置为Boolean.最后,输入NOValue字段.
要为状态栏设置全局样式,请在"信息"选项卡下添加另一个属性,其键为" Status bar style类型" String和"值" Opaque black style.
这是一篇博文,其中包含更多细节和一些示例代码:
http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
par*_*gic 12
为Xcode GM Seed更新的答案:
在Info.plist把View controller-based status bar appearance作为NO
在项目中,设置:

在ViewDidLoad中:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Moh*_*mar 12
不需要做额外的事情,只需在viewController中编写此代码并获取状态栏颜色为白色
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Run Code Online (Sandbox Code Playgroud)
Faw*_*kes 11
我认为所有的答案并没有真正指出问题,因为它们都在特定的情况下工作.但如果您需要涵盖所有案例,请遵循以下几点:
根据您需要的状态栏灯样式,您应始终牢记以下3点:
1)如果您需要启动屏幕或其他地方的状态栏,您无法控制它(不在视图控制器中,而是一些系统控制的元素/时刻,如启动屏幕)
您转到项目设置

2)如果您在导航控制器中有控制器 您可以在界面构建器中更改它,如下所示:
b)然后将导航栏的样式设置为"黑色",因为这意味着您的状态栏下方会出现"黑色" - >深色背景,因此会将状态栏设置为白色
或者在代码中执行如下操作
navigationController?.navigationBar.barStyle = UIBarStyle.Black
Run Code Online (Sandbox Code Playgroud)
3)如果您只有控制器需要拥有自己的状态栏样式,并且它没有作为UINavigationController嵌入到某些容器结构中
在控制器的代码中设置状态栏样式:
Cag*_*aya 10
只是打电话
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
Run Code Online (Sandbox Code Playgroud)
在里面
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
Run Code Online (Sandbox Code Playgroud)
我的AppDelegate作品方法在iOS7中对我很有用.
这在iOS 7 UI Transition Guide中有记录,您需要Apple开发人员ID才能直接访问.相关摘录:
因为状态栏是透明的,所以它后面的视图显示出来.[...]使用
UIStatusBarStyle常量指定状态栏内容应该是暗还是亮:
UIStatusBarStyleDefault显示黑暗内容.[...]
UIStatusBarStyleLightContent显示轻量级内容.当暗内容位于状态栏后面时使用.
也可能感兴趣:
在iOS 7中,您可以从单个vew控制器控制状态栏的样式,并在应用程序运行时进行更改.要选择加入此行为,请将
UIViewControllerBasedStatusBarAppearance密钥添加到应用程序的Info.plist文件中并为其指定值YES.
我绝对建议您浏览一下该文档,您也可以使用Apple开发者ID访问该文档.
以下是有关状态栏更改的Apple指南/说明.状态栏中仅允许黑暗和浅色(同时为黑色).
这是 - 如何更改状态栏样式:
如果要设置状态栏样式,则应用程序级别将设置UIViewControllerBasedStatusBarAppearance为NO".plist"文件.
如果您要在视图控制器级别设置状态栏样式,请按照下列步骤操作:
UIViewControllerBasedStatusBarAppearanceto .YES.plist在viewDidLoad中添加功能 - setNeedsStatusBarAppearanceUpdate
覆盖视图控制器中的preferredStatusBarStyle.
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
根据状态栏样式设置级别设置.plist的值.

这是在应用程序启动期间或视图控制器的viewDidLoad期间更改/设置状态栏的背景颜色的一些hacky技巧.
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
Run Code Online (Sandbox Code Playgroud)
结果如下:

对于 Swift 5,我添加了以下几行:
override func viewDidAppear(_ animated: Bool) {
navigationController?.navigationBar.barStyle = .black
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
我做了一些不同的事情,它对我有用.
没有代码更改,我确实配置了我的.plist文件:
我希望它有所帮助.
对于每个视图控制器,我将故事板中的"状态栏"的模拟度量属性从"推断"更改为"轻量级内容"
如果您仍想View controller-based status bar appearance在info.plist中设置为YES,这意味着您可以更改每个视图控制器的状态栏,请在ViewDidLoad的状态栏中使用以下白色文本:
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
Run Code Online (Sandbox Code Playgroud)
如果你想要与Swift相同的结果,你可以在你的AppDelegate.swift文件中使用这个代码:
UINavigationBar.appearance().barStyle = .BlackTranslucent
Run Code Online (Sandbox Code Playgroud)
状态栏的文本将为白色:-)!
UINavigationController是(谁知道)的子类UIViewController!
因此,当呈现嵌入在导航控制器中的视图控制器时,您并不是真正呈现嵌入的视图控制器;而是呈现嵌入的视图控制器。您正在展示导航控制器!UINavigationController,作为 的子类UIViewController,继承preferredStatusBarStyle和childForStatusBarStyle,您可以根据需要进行设置。
以下任何方法都应该有效:
info.plist,添加以下属性:
UIUserInterfaceStyle(又名“用户界面风格”)覆盖preferredStatusBarStyle范围内UINavigationController
preferredStatusBarStyle( doc ) - 视图控制器的首选状态栏样式子类或扩展UINavigationController
class MyNavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
.lightContent
}
}
Run Code Online (Sandbox Code Playgroud)
或者
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
.lightContent
}
}
Run Code Online (Sandbox Code Playgroud)覆盖childForStatusBarStyle范围内UINavigationController
childForStatusBarStyle(文档 ) - 当系统需要视图控制器来确定状态栏样式时调用“如果您的容器视图控制器从其子视图控制器之一派生其状态栏样式,[覆盖此属性]并返回该子视图控制器。如果您返回 nil 或不覆盖此方法,则使用 self 的状态栏样式。如果此方法的返回值发生变化,请调用 setNeedsStatusBarAppearanceUpdate() 方法。”
子类或扩展UINavigationController
class MyNavigationController: UINavigationController {
override var childForStatusBarStyle: UIViewController? {
topViewController
}
}
Run Code Online (Sandbox Code Playgroud)
或者
extension UINavigationController {
open override var childForStatusBarStyle: UIViewController? {
topViewController
}
}
Run Code Online (Sandbox Code Playgroud)您可以返回上面您想要的任何视图控制器。我推荐以下之一:
注意:如果您决定子类化UINavigationController,请记住通过 IB 中的身份检查器将该类应用到您的导航控制器。
PS 这适用于 iOS 13
小智 7
让我给你一个完整的答案.更改状态栏文本颜色非常容易,但在iOS 7中专门针对新手来说有点混乱.
如果您试图通过选择视图控制器并转到右侧的模拟指标,在故事板中将颜色从黑色更改为白色,则它将无法工作,我不知道原因.它应该通过这样改变,但任何方式.
其次,您不会在plist中找到UIViewControllerBasedStatusBarAppearance属性,但默认情况下它不在那里.您必须通过单击+按钮自己添加它,然后将其设置为NO.
ios 7状态栏文本颜色
最后,您必须转到AppDelegate.m文件并在didFinishLaunchingWithOptions方法中添加以下内容,添加以下行:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
这会将所有视图控制器的颜色更改为白色.希望这可以帮助!
小智 6
完成这项工作的关键是只有全屏视图控制器才能决定状态栏的样式.
如果您正在使用导航控制器并希望在每个视图控制器的基础上控制状态栏,您将需要子类UINavigationController并实现preferredStatusBarStyle,以便它返回topViewController的首选项.
确保将故事板场景中的类引用从UINavigationController更改为子类(例如下面示例中的MyNavigationController).
(以下适用于我.如果您的应用程序是基于TabBar的,您将希望通过继承UITabBarController来做类似的事情,但我还没有尝试过).
@interface MyNavigationController : UINavigationController
@end
@implementation MyNavigationController
- (UIStatusBarStyle)preferredStatusBarStyle
{
return self.topViewController.preferredStatusBarStyle;
}
@end
Run Code Online (Sandbox Code Playgroud)
总结一下,编辑项目Info.plist并添加:
View controller-based status bar appearance : NO
Status bar style : Opaque black style
或者如果你有原始键/值plist
UIViewControllerBasedStatusBarAppearance : NO
UIStatusBarStyle : Opaque black style
Xcode 似乎不断改变这一点,所以这是最新的。
要将状态栏更改为白色:
UIViewControllerBasedStatusBarAppearance并将值设置为No(false)。UIStatusBarStyle并将值设置为UIStatusBarStyleLightContent(即光内容)。您可以从 info.plist 执行此操作:
1)“查看基于控制器的状态栏外观”设置为“NO”
2)“状态栏样式”设置为“UIStatusBarStyleLightContent”
完毕
对于Xcode 5.1:
在.plist中将" 查看基于控制器的状态栏外观 "添加到NO.
在AppDelegate中,添加:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
就这样!
斯威夫特 3 - Xcode 8。
如果您希望状态栏最初隐藏在启动屏幕上,请尝试此操作,
步骤 1:将以下内容添加到info.plist.
View controller-based status bar appearance 价值 NOStatus bar is initially hidden 价值 YES第 2 步:在didFinishLaunchingWithOptions方法中编写它。
UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
594785 次 |
| 最近记录: |