Измените цвет фона фона в строке состояния iOS 7
Я хочу изменить цвет фона строки состояния на iOS 7, и я использую этот код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UIApplication sharedApplication].statusBarHidden = NO;
self.window.clipsToBounds = YES;
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
...
...
}
Когда я пишу это, он показывает строку состояния с черным фоном; Я хочу, чтобы у него был красный фон.
![]()
Как изменить цвет строки состояния на красный фон вместо черного?
Ответы
Ответ 1
В iOS 7 и более поздних версиях строка состояния прозрачна. Установите backgroundColor
вашего представления на цвет, который вы хотите для строки состояния.
Или вы можете добавить подвью 20px-high с красным цветом в верхней части вашего представления.
Подробнее см. Руководство по переходу Apple.
Кроме того, убедитесь, что ваш preferredStatusBarStyle
равен UIStatusBarStyleLightContent
. и в вашем Info.plist установите "Просмотр строки состояния на основе контроллера" на "НЕТ".
Ответ 2
При обработке цвета фона в строке состояния в iOS 7 есть 2 случая
Случай 1: просмотр с панелью навигации
В этом случае используйте следующий код в методе viewDidLoad
UIApplication *app = [UIApplication sharedApplication];
CGFloat statusBarHeight = app.statusBarFrame.size.height;
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
statusBarView.backgroundColor = [UIColor yellowColor];
[self.navigationController.navigationBar addSubview:statusBarView];
Случай 2: просмотр без панели навигации
В этом случае используйте следующий код в методе viewDidLoad
UIApplication *app = [UIApplication sharedApplication];
CGFloat statusBarHeight = app.statusBarFrame.size.height;
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
statusBarView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:statusBarView];
Ответ 3
Цель c
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UIApplication sharedApplication] setStatusBarHidden:false];
UIView *statusBar=[[UIApplication sharedApplication] valueForKey:@"statusBar"];
statusBar.backgroundColor = [UIColor redColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
return YES;
}
Это работает для меня. Надеюсь, это тоже поможет.
Ответ 4
для того, что предоставил @Teja Kumar Bethina, полезно, но лучше получить высоту statusBar из синтаксиса UIApplication, как показано ниже:
UIApplication *app = [UIApplication sharedApplication];
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -app.statusBarFrame.size.height, self.view.bounds.size.width, app.statusBarFrame.size.height)];
statusBarView.backgroundColor = [UIColor blackColor];
Ответ 5
в приложении AppDelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
и в файле project.plist проекта
установить флаг NO для просмотра строки состояния на основе контроллера в приложении.
Ответ 6
Вызовите эту функцию из передачи ViewDidLoad с цветом своей строки состояния.
func setStatusBarBackgroundColor(color: UIColor)
{
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView
else
{
return
}
statusBar.backgroundColor = color
}
Надеюсь, это поможет.
Ответ 7
Здесь быстрое решение, использующее автоматическую компоновку. Если ваше приложение находится в портретном или альбомном представлении, ширина полосы будет правильной. Он добавлен в представление навигационной панели в виде подсмотра, поэтому он смещен на -20. Вы можете добавить его в родительский вид навигационной панели, а затем смещение не требуется. В этом примере также будет установлен цвет так же, как и на панели навигации.
Надеюсь, что это поможет:)
// Add colored opaque view behind the status bar view
let statusBarView = UIView()
statusBarView.backgroundColor = navigationBar.backgroundColor
statusBarView.translatesAutoresizingMaskIntoConstraints = false
navigationBar.addSubview(statusBarView)
let views = ["statusBarView": statusBarView]
let hConstraint = "H:|-0-[statusBarView]-0-|"
let vConstraint = "V:|-(-20)-[statusBarView(20)]"
var allConstraints = NSLayoutConstraint.constraintsWithVisualFormat(hConstraint,
options: [], metrics: nil, views: views)
allConstraints += NSLayoutConstraint.constraintsWithVisualFormat(vConstraint,
options: [], metrics: nil, views: views)
NSLayoutConstraint.activateConstraints(allConstraints)
Ответ 8
если ваше приложение основано на навигации, тогда вы можете установить цвет фона фона состояния следующим образом:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
может это помочь.