Подтвердить что ты не робот

В iOS 7, как мне скрывать и показывать строку состояния "на лету" (когда захочу)

Говорите, что пользователь находится в контроллере просмотра и хочет войти в режим "полного экрана", когда строка состояния скрыта, в iOS 6 это был простой вызов метода, чтобы скрыть/показать строку состояния, но независимо от того, что он, похоже, сохраняется в iOS 7.

Я видел такие решения:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Но это не позволяет переключать его во время выполнения. (Он не принимает никаких аргументов.)

В моем info.plist у меня View controller-based status bar appearance установлено значение NO.

Я в конце концов. Как скрыть его?

4b9b3361

Ответ 1

Ну вот один из способов сделать это:

в myViewController.h

@interface myViewController : UIViewController {
    BOOL shouldHideStatusBar;
}

Затем в myViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    shouldHideStatusBar = YES;
}

- (BOOL)prefersStatusBarHidden {
    return shouldHideStatusBar;
}

и скажем, когда я касаюсь экрана, он должен теперь показывать строку состояния. Вам нужно будет вызвать: setNeedsStatusBarAppearanceUpdate специально для этого, а затем переключатель (bool в этом случае), чтобы показать/скрыть.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    shouldHideStatusBar = (shouldHideStatusBar)? NO: YES;
    [self setNeedsStatusBarAppearanceUpdate];
}

setNeedsStatusBarAppearanceUpdate

Это нужно вызывать всякий раз, когда возвращаемые значения для представления Изменены атрибуты строки состояния контроллера. Если он вызывается из в блоке анимации изменения будут анимированы вместе с остальной части блока анимации.

prefersStatusBarHidden:

Возвращаемое значение Логическое значение YES указывает, что строка состояния должна быть скрытый. Значение по умолчанию: NO.

Обсуждение Если вы измените возвращаемое значение для этого метода, вызовите setNeedsStatusBarAppearanceUpdate.

Чтобы указать, что контроллер дочернего представления должен контролировать предпочтительные строка состояния скрытое/незакрытое состояние, реализовать childViewControllerForStatusBarHidden.


Если вы планируете приложение, работающее с iOS 6, возможно, захотите посмотреть этот пост

Ответ 2

У меня возникли проблемы с некоторыми другими ответами в iOS 8, поэтому я сделал немного больше исследований и нашел: [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];. Затем вы можете включить/отключить анимацию.

Ответ 3

Рекомендация

Для поддержки iOS7 я предлагаю вам вернуться к представлению статуса панели управления View на YES. Это позволит вам контролировать строки состояния в коде. Руководство по переходу iOS (ссылка) предоставляет другие варианты управления внешним видом строки состояния (здесь есть не только одно исправление, но и ряд настроек что обеспечит вам то, что вы хотите). Также имейте в виду, что даже если вы установите внешний вид в коде, вы захотите обновить свои раскадровки или файлы nib, чтобы они соответствовали вашему стандарту (в противном случае вы можете временно увидеть флэшку состояния в зависимости от того, где вы устанавливаете код для обновления строки состояния), Я бы рекомендовал вам установить код перед представлением.

После установки свойства plist в значение YES: убедитесь, что этот метод существует в UIViewController, где вы хотите, чтобы строка состояния исчезла:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

Отображение строки состояния

Возврат Нет, если вы хотите, чтобы строка состояния отображалась в каждом из ваших контроллеров просмотров.

Может быть несколько других проблем со строкой состояния:

Альтернативный подход

В соответствии с Apple Documentation вы можете использовать другой метод управления строкой состояния, используя метод UIApplication, указанный в ссылке ниже (ссылка), setStatusBarHidden по-прежнему остается жизнеспособным при использовании этого подхода.

Option #2

Эта опция позволит вам продолжать использовать свойства класса UIApplication, если вы следуете настройке plist выше.

UIApplication Status

Образцы

Вы можете найти примеры кода альтернативного варианта строки состояния, упомянутого выше, в:

Ответ 4

Если контроллер представления, который находится на экране, является контроллером корневого представления, тогда вы должны просто реализовать функцию

- (BOOL)prefersStatusBarHidden {
    return _showStatusBar;
}

с _showStatusBar является BOOL, тогда всякий раз, когда вы меняете этот вызов свойства [self setNeedsStatusBarAppearanceUpdate]

Если контроллер просмотра удерживается внутри чего-то другого, то есть UINavigationController, тогда вам нужно сначала реализовать метод - (UIViewController *)childViewControllerForStatusBarHidden в родительском контроллере и вернуть текущий экземпляр контроллера представления.

Это все с View controller-based status bar appearance, установленным на YES

Ответ 5

Я думаю, что это будет работать под итоговой страницей вашего приложения, иначе ответьте мне enter image description here

видимость --- установите флажок