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