我不知道如何在iOS7中将UIStatusBar
的背景颜色设置为黑色,而导航栏的背景颜色不是黑色。在iOS7中,导航栏是透明的,因此状态栏从背景颜色获取背景颜色UINavigationBar。和状态栏上的文本应该是白色的。我使用了 UIStatusBarStyleBlackOpaque ,但在iOS7中也不推荐使用它。我知道我可以通过设置StatusBarStyle
将状态栏的文本颜色更改为白色as 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,因此状态栏上的文本被隐藏。
如何解决?
请帮助!! 在此先感谢!!
答案 0 :(得分:3)
我刚添加此行以使导航栏不透明。
[navC.navigationBar setTranslucent:NO];
并使用相同的上述代码添加uiview代替状态栏以及所需的颜色。使用lightcontentstyle以白色显示文本。 它解决了我的问题。
答案 1 :(得分:0)
转到你的app info.plist
1)将基于View控制器的状态栏外观设置为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];
}
希望它有所帮助。
答案 2 :(得分:0)
您可以在应用程序启动期间或视图控制器的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
}
}
结果如下: