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

Когда я запускаю ваш код:

введите описание изображения здесь

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