color - ios status bar light
如何更改iOS 7中的状态栏文字颜色 (20)
我的应用程序背景较暗,但在iOS 7中,状态栏变得透明。 所以我看不到任何东西,只有角落里的绿色电池指示器。 如何将状态栏文本颜色更改为白色,就像它在主屏幕上一样?
在.plist文件中将
UIViewControllerBasedStatusBarAppearance
设置为YES
。在
viewDidLoad
做一个[self setNeedsStatusBarAppearanceUpdate];
添加以下方法:
- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
注意 :这不适用于UINavigationController
控制器,请参阅下面的Tyson评论 :)
Swift 3 - 这将工作在UINavigationController
内的控制器。 将此代码添加到您的控制器中。
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
注意:大部分上传的答案对iOS 7/8不起作用
在Info.plist中将'基于视图控制器的状态栏外观'设置为NO
在AppDelegate中添加
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
至
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
此解决方案适用于iOS 7/8
只需在Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
不需要做一些额外的工作,只需在viewController中编写这段代码,并将状态栏颜色改为白色即可
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
只需两个步骤如下:
步骤1:
在project target
的“信息”选项卡下,添加行:
UIViewControllerBasedStatusBarAppearance
,设置值NO
。
第2步:
在项目AppDelegate.m
:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
…
[application setStatusBarStyle:UIStatusBarStyleLightContent];
…
}
只需打电话
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
在里面
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
我的AppDelegate
方法在iOS7中非常适合我。
在info.plist中设置字段值NO在目标>常规设置中查看基于控制器的状态栏外观并设置状态栏样式灯。
如Apple Apple开发人员文档所述,iOS 7允许单独的视图控制器确定状态栏的外观:
iOS 7为视图控制器提供了在应用程序运行时调整状态栏样式的功能。 动态更改状态栏样式的一种好方法是实现
preferredStatusBarStyle
并在动画块内更新状态栏外观并调用setNeedsStatusBarAppearanceUpdate
。
全局设置状态栏外观是一个两步过程。
首先,你需要告诉iOS你不想在一个视图的基础上设置状态栏的外观。
然后您需要负责并实际设置新的全局状态栏样式。
要禁用视图状态栏控件,您需要在Info.plist
设置基于View controller-based status bar appearance
属性。
打开项目导航器并为您的iOS应用程序选择项目,然后选择信息选项卡。
将鼠标悬停在一行上,然后单击出现的加号,将新属性添加到.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/
如果你的UIViewController在UINavigationController中,你将不得不设置BarStyle:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
原答复在这里
如果您仍然希望在info.plist中将View controller-based status bar appearance
设置为YES,这意味着您可以更改每个视图控制器的状态栏,请在ViewDidLoad中的状态栏中使用以下白色文本:
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
对我而言,在其他答案(以及其他来源/文档)中使用所有内容时并没有发生任何事情。 有帮助的是在XIB中将导航栏样式设置为“黑色”。 这将文本更改为白色而没有任何代码。
总结一下,编辑你的项目Info.plist
并添加:
View controller-based status bar appearance
: NO
Status bar style
: Opaque black style
或者如果你有原始的键/值plist
UIViewControllerBasedStatusBarAppearance
: NO
UIStatusBarStyle
: Opaque black style
我认为所有的答案都没有真正指出问题的原因,因为它们都在特定的情况下工作。 但是,如果您需要涵盖所有情况,请遵循以下几点:
根据您需要的状态栏灯光风格,您应始终记住以下3点:
1)如果你需要启动屏幕或其他地方的状态栏,那里你无法控制它(不是视图控制器,而是一些系统控制的元素/时刻,如启动屏幕)你去你的项目设置
2)如果导航控制器内有控制器您可以在界面构建器中更改它,如下所示:
b)然后将导航栏的样式设置为“黑色”,因为这意味着您的状态栏下会出现“黑色” - >黑色背景,因此它会将状态栏设置为白色
或者按照以下代码进行操作
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3)如果只有控制器需要拥有自己的状态栏风格,并且它不作为UINavigationController嵌入到某个容器结构中
设置控制器代码中的状态栏样式:
让我给你一个完整的答案你的问题。 更改状态栏的文字颜色非常简单,但它在iOS 7中有点混乱,特别适合新手。
如果您想通过选择视图控制器并转到右侧的模拟度量标准来尝试在故事板中将颜色从黑色更改为白色,它将无法工作,我不知道为什么。 它应该像这样改变,但如何改变。
其次,你不会在你的plist中找到UIViewControllerBasedStatusBarAppearance属性,但默认情况下它不存在。 您必须通过单击+按钮自行添加它,然后将其设置为NO。
ios 7状态栏文字颜色
最后,你必须去你的AppDelegate.m文件,并在didFinishLaunchingWithOptions方法中添加以下内容,添加以下行:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
这会将所有视图控制器的颜色更改为白色。 希望这可以帮助!
这些都不适合我,所以这里是一个可行的解决方案...
在Info.plist
,添加一行:
UIViewControllerBasedStatusBarAppearance
,并设置值NO
。
然后在didFinishLaunchingWithOptions
AppDelegate中,添加这些行:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
这适用于2013年9月18日发布的Golden Master iOS 7和Xcode 5 GM种子和iOS7 SDK(至少在隐藏导航控制器的情况下):
在
Info.plist
the UIViewControllerBasedStatusBarAppearance
设置为NO
。在
ViewDidLoad
方法或任何地方,你想改变状态栏的样式:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
那么,这对我来说真的很像一块蛋糕。
转到您应用的info.plist
。
- 将
View controller-based status bar appearance
为NO
- 将
Status bar style
UIStatusBarStyleLightContent
为UIStatusBarStyleLightContent
然后转到您的应用程序的代理并粘贴到您设置窗口的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];
}
答对了。 它为我工作。