Установите цвет фона UIStatusBar как черный в ios7

Я не знаю, как я могу установить цвет фона UIStatusBar как черный в iOS7, в то время как цвет фона панели навигации не черный. и как в iOS7 панель навигации прозрачна, поэтому строка состояния получает цвет фона из цвета фона UINavigationBar.and текст поверх строки состояния должен быть белого цвета. Я использовал 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, и, таким образом, текст поверх строки состояния скрыт.

Как это решить?

Пожалуйста помоги!! Заранее спасибо!!

3 ответа

Я просто добавил эту строку, чтобы сделать панель навигации непрозрачной.

[navC.navigationBar setTranslucent: NO];

и используйте тот же код выше, чтобы добавить uiview вместо строки состояния с нужным цветом. с lightcontentstyle, чтобы показать текст белым цветом. Это решило мою проблему.

Перейти к вашему приложению info.plist

1) Установить вид строки состояния на основе контроллера на NO 2) Установить стиль строки состояния на UIStatusBarStyleLightContent

Затем перейдите к делегату приложения и вставьте следующий код, где вы устанавливаете RootViewController для Windows.

#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];
}

Надеюсь, поможет.

Вы можете установить / изменить цвет фона для строки состояния во время запуска приложения или во время 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
    }

}



Вот результат:

Другие вопросы по тегам