在ios 7中将UI状态栏的背景颜色设置为黑色
Posted
技术标签:
【中文标题】在ios 7中将UI状态栏的背景颜色设置为黑色【英文标题】:Set the background color of UIStatusBar as black in ios7 【发布时间】:2014-09-25 11:57:56 【问题描述】:我不知道如何在 ios7 中将 UIStatusBar
的背景颜色设置为黑色,而导航栏的背景颜色不是黑色。因为在 iOS7 中导航栏是透明的,所以状态栏从 UINavigationBar 的背景颜色获取背景颜色.and text over statusbar应该是白色的。我使用过UIStatusBarStyleBlackOpaque,但它在iOS7中也被弃用了。我知道我可以通过将StatusBarStyle
设置为来将状态栏的文本颜色更改为白色UIStatusBarStyleLightContent.
为了将 UIStatusBar 的背景颜色设置为黑色,我使用了以下代码:-
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
addStatusBar.backgroundColor = [UIColor blackColor];
[self.window.rootViewController.view addSubview:addStatusBar];
通过上面的代码,我手动添加了 uiview 来代替所需颜色的状态栏。 问题是,这个 uistatusbar 被移到了黑色视图的后面,即 addStatusBar,因此状态栏上的文本被隐藏了。
如何解决?
请帮忙!! 提前致谢!!
【问题讨论】:
【参考方案1】:我刚刚添加了这一行以使导航栏不透明。
[navC.navigationBar setTranslucent:NO];
并使用与上述相同的代码添加 uiview 来代替状态栏,并使用所需的颜色。使用 lightcontentstyle 以白色显示文本。 它解决了我的问题。
【讨论】:
【参考方案2】:转到您的应用 info.plist
1) 将基于视图控制器的状态栏外观设置为 NO 2) 将状态栏样式设置为 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 blackColor];
[self.window.rootViewController.view addSubview:view];
希望对你有帮助。
【讨论】:
感谢 user3432164,但我已经添加了,但忘了提及:)【参考方案3】:您可以在应用程序启动期间或视图控制器的 viewDidLoad 期间设置/更改状态栏的背景颜色。
我在这里尝试使用 iOS 11(使用 Swift 4):
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.cyan
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.cyan
结果如下:
【讨论】:
以上是关于在ios 7中将UI状态栏的背景颜色设置为黑色的主要内容,如果未能解决你的问题,请参考以下文章