我想将status bar
(显示时钟和电池的顶部的小条带)的颜色设置为带有白色文本的黑色背景。我怎么能这样做?
到目前为止我的方法:
我在info.plist
View controller-based status bar appearance --> NO
和viewController
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleDefault;
}
然而,风格并没有改变。如何使状态栏变黑?
答案 0 :(得分:5)
对于Xcode 8 / iOS 10 / Swift 3:
通过在状态栏下添加彩色UIView,在一个视图上临时更改状态栏背景颜色。我将这些行放在viewWillAppear()
中。我的色调是白色的,透明度为45%,但你可以放入任何不透明或透明的UIColor值。
let statusView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 20))
statusView.backgroundColor = UIColor.white.withAlphaComponent(0.45)
self.view.addSubview(statusView)
如果视图上有导航控制器,则可以将statusView添加到navigationController而不是视图。
您还可以传入UIScreen.main.bounds.size.width作为模拟状态栏背景视图的宽度。不要硬编码宽度,否则它不适合所有设备。
或者,您也可以使用此代码更改整个应用中的状态栏背景。请注意,即使放在viewWillAppear()
而不是viewDidLoad()
,如果您向前/向后导航,其他视图仍会采用更改后的状态栏。
let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statWindow.subviews[0] as UIView
statusBar.backgroundColor = UIColor.white.withAlphaComponent(0.45)
答案 1 :(得分:4)
您可以通过调用
使文本变白UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
状态栏具有透明背景。没有办法改变这一点。您可以将其下方的视图固定为背景。
答案 2 :(得分:2)
答案 3 :(得分:1)
简易解决方案:
转到主故事板(应用程序启动时,在启动完成后加载的故事板),并将顶级UIView
的背景颜色更改为黑色。
如果您需要屏幕的其余部分有另一个彩色背景,只需创建另一个UIView
作为顶级视图的子视图,将其框架设置为从顶部布局指南下方开始,然后设置它的颜色是你需要的任何颜色。
您仍然需要设置其他答案中提到的plist标志。
答案 4 :(得分:0)
转到Plist文件
a) Set the value "View controller-based status bar appearance" to NO
b) Set the value "Status bar style" to UIStatusBarStyleLightContent
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] != NSOrderedAscending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
view.backgroundColor=[UIColor blackColor];
[self.window.rootViewController.view addSubview:view];
}
return YES;
}
它为我修复了状态栏颜色。希望它有所帮助。