setStatusBarHidden не работает
В моем UIViewController
, Я имею:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[self.view sizeToFit];
}
И все же вид выглядит так:
Я уверен, что этот код работает. Я загружаю вид из xib
, Я ничего не сделал для строки состояния, как изменить ее стиль. Что может быть не так?
Даже когда я устанавливаю `application.statusBarHidden = YES" в моем делегате приложения, я вижу:
6 ответов
В списке свойств вашего приложения, если для параметра "Внешний вид строки состояния на основе контроллера" установлено значение "ДА", поместите этот код в контроллер представления, в котором скрывается строка состояния:
- (BOOL)prefersStatusBarHidden {
return YES;
}
В противном случае, если для "Просмотреть внешний вид строки состояния на основе контроллера" задано значение "НЕТ", вызывайте следующее, когда хотите скрыть строку состояния.
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Если вы хотите скрыть строку состояния в своем приложении, выполните следующие действия:
Шаг 1:
Шаг 2:
Шаг 3:
Добавьте в свое приложение функцию Delegate didFinishLaunchingWithOptions
application.statusBarHidden = YES;
так:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
application.statusBarHidden = YES;
}
Это связано с тем, что iOS 7 изменила способ работы со строкой состояния.
настройка UIViewControllerBasedStatusBarAppearance
в NO
в вашем приложении Info.plist
должно сработать.
Вы можете показать / скрыть строку состояния вашего приложения, используя следующий код (работает на 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];
}
У меня все работает нормально
- (BOOL) предпочитает StatusBarHidden { вернуть ДА; }
ВСЕГДА в корневом представлении. Если вы делаете это в подпредставлении, оно не будет работать, потому что видимость строки состояния будет взята из родительского представления.
Попробуйте добавить это после того, как скрыли строку состояния:
[self.view setFrame:[self.view bounds]];
В вашем appdelegate.m в didFinishLaunchingWithOptions
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
application.statusBarHidden = YES;
}
Когда я запускаю ваш код: