Скрыть строку состояния с помощью UINavigationBar barPositionTopAttached

У меня есть rootViewController - UINavigationController, Как Вам известно UINavigationController имеет UINavigationBar, В iOS 7 UINavigationBar может быть с barPosition topAttached. Я хочу скрыть ВКЛ / ВЫКЛ StatusBar, нажав на кнопку. Но я тоже этого хочу UINavigationBar всегда должно быть barPositionTopAttached.

- (BOOL)prefersStatusBarHidden {
   return __statusBarHidden;
}

- (IBAction)tapShowPhotosButton:(id)sender {
    __statusBarHidden = !__statusBarHidden;
    [self setNeedsStatusBarAppearanceUpdate];
}

Теперь UINavigationBar изменено barPosition от topAttached наверх и так далее.

2 ответа

Решение

Я пишу в техподдержку и получаю следующий ответ:

Как указано в документации для, -positionForBar вызывается, когда брус должен знать свою позицию в новом окне. Он не будет вызываться, когда строка состояния скрывается или отображается. Контроллер навигации обрабатывает изменение размера панели навигации в ответ на изменение строки состояния. К сожалению, UINavigationController не предоставляет API для настройки поведения изменения размера панели навигации.

Попробуй это:

- (IBAction)tapShowPhotosButton:(id)sender 
{
    __statusBarHidden = !__statusBarHidden;
    [[UIApplication sharedApplication] setStatusBarHidden:__statusBarHidden withAnimation:UIStatusBarAnimationSlide];
    [self setNeedsStatusBarAppearanceUpdate];
}

Панель навигации должна автоматически перемещаться вместе со строкой состояния

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