Установите цвет фона 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
}
}
Вот результат: