在ios7中将UIStatusBar的背景颜色设置为黑色

时间:2014-09-25 11:57:56

标签: ios background-color uistatusbar

我不知道如何在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,因此状态栏上的文本被隐藏。

如何解决?

请帮助!! 在此先感谢!!

3 个答案:

答案 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
    }

}



结果如下:

enter image description here

相关问题