SetStatusBarHidden не работает
В моем UIViewController
у меня есть:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[self.view sizeToFit];
}
Однако вид выглядит следующим образом:
![enter image description here]()
Я уверен, что этот код работает. Я загружаю представление из xib
. Я не сделал ничего другого в строке статуса, как изменить свой стиль. Что может быть неправильным?
Даже когда я устанавливаю `application.statusBarHidden = YES 'в своем делете приложения, я вижу:
![enter image description here]()
Ответы
Ответ 1
В вашем приложении plist, если у вас есть "Просмотр строки состояния на основе контроллера", установленной в YES, поместите этот код в контроллер вида, в котором вы скрываете строку состояния:
- (BOOL)prefersStatusBarHidden {
return YES;
}
Если "Просмотр состояния панели управления на основе контроллера" установлен на "НЕТ", вызовите следующее, когда вы хотите скрыть строку состояния.
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Ответ 2
если вы хотите скрыть строку состояния в своем приложении, выполните следующие действия:
Шаг 1:
![enter image description here]()
Шаг 2:
![enter image description here]()
Шаг 3:
Добавить в приложение appDelegate didFinishLaunchingWithOptions
application.statusBarHidden = YES;
так:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
application.statusBarHidden = YES;
}
Ответ 3
Это потому, что iOS 7 изменил способ работы со строкой состояния.
Настройка UIViewControllerBasedStatusBarAppearance
- NO
в вашем приложении Info.plist
должна работать.
Ответ 4
Вы можете показать/скрыть строку состояния вашего приложения, используя следующий код (Работает на IOS 7 - IOS 8 и IOS 9):
в вашем файле проекта .h добавьте это логическое значение:
BOOL isShowStatus;
И в .m файле добавьте это:
//To show the status bar:
-(void)showTheStatusBar
{
isShowStatus = YES;
[self setNeedsStatusBarAppearanceUpdate];
}
//And to hide the status bar:
-(void)hideTheStatusBar
{
isShowStatus = NO;
[self setNeedsStatusBarAppearanceUpdate];
}
- (BOOL)prefersStatusBarHidden {
return !isShowStatus;
}
Просто позвоните ему из любого места, например, загрузите:
- (void)viewDidLoad
{
[super viewDidLoad];
//To show the status bar:
[self showTheStatusBar];
//Or to hide it:
[self hideTheStatusBar];
}
Ответ 5
Для меня это прекрасно работает:
- (BOOL)prefersStatusBarHidden {
return YES;
}
ВСЕГДА в корневом представлении. Если вы делаете это в подвью, это не будет работать, потому что видимость строки состояния будет взята из родительского представления.
Ответ 6
Попробуйте добавить это после скрытия строки состояния:
[self.view setFrame:[self.view bounds]];
В вашем appdelegate.m в didFinishLaunchingWithOptions
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
application.statusBarHidden = YES;
}
Когда я запускаю ваш код:
![enter image description here]()