IOS 7 - Скрыть строку состояния в определенном виде

Это довольно уникальный вопрос. Я искал часы и не мог найти ответ. Я хочу, чтобы ALL UIViewControllers в моем приложении отображал UIStatusBar. Но при некотором UIViewController, когда вы нажимаете UIButton, следующий метод вызывает контроллер камеры modalView. Я хочу скрыть строку состояния, когда вызывается следующий метод:

-(BOOL)startCameraControllerFromViewController:(UIViewController*)controller
                                 usingDelegate:(id )delegate 

Я попытался изменить файл plist с помощью строки состояния UIViewController= YES (я хочу, чтобы UIStatusBar скрывался при отключении этого модального вида)

Я также пробовал следующее в рамках вышеописанного метода:

[[UIApplication sharedApplication] setStatusBarHidden:YES 
                                   withAnimation:UIStatusBarAnimationNone];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

    [[UIApplication sharedApplication] setStatusBarHidden:YES 
                                       withAnimation:UIStatusBarAnimationNone];

Кажется, что ничего не работает. Может ли кто-нибудь помочь?

Ответ 1

Решил его, подклассифицировав UIImagePickerController и просто добавив его в файл .m:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

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

ПРИМЕЧАНИЕ. Убедитесь, что вид панели управления на панели управления установлен в YES в вашем файле plist.

Ответ 2

Внедрите этот метод в свой контроллер просмотра,

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

и вызовите этот метод там, где хотите,

[self prefersStatusBarHidden];

Ответ 3

То, что вы можете сделать, также - установить строку состояния, скрытую в plist, как вы делали это раньше. Затем вы вызываете setStatusBarHidden: NO в делегате приложения, чтобы установить его как значение по умолчанию при первом загрузке приложения. И затем вы снова вызываете этот метод, когда вам нужно скрыть строку состояния со значением YES.

Ответ 4

Успешно использовали - (BOOL) prefersStatusBarHidden {...} для многочисленных контроллеров представлений, но он не отображался в определенном модальном представлении без навигационного контроллера. В соответствии с Karthika у меня был успех с Проверить строку состояния iOS, скрытую с помощью модального контроллера просмотров.

Ответ 5

-(void)viewWillApper:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
-(void)viewWillDisappear:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}

Этот код установит viewcontroller, который вы хотите скрыть строку состояния.