iPhone - Удалить строку состояния программно - PullRequest
9 голосов
/ 21 марта 2012

Я сделал приложение, которое реализует камеру iPhone.Когда пользователь заканчивает выбор своего изображения, строка состояния появляется снова!Как сделать так, чтобы строка состояния оставалась скрытой?

Вот мой код:

-(IBAction)pickImage:(id)sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;

picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
background.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

}

Если я что-то не так делаю, укажите это!Спасибо, Рафи

Ответы [ 6 ]

29 голосов
/ 21 марта 2012
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

Вы можете выбрать другой стиль анимации, если он вообще есть.

20 голосов
/ 27 сентября 2013

В iOS 7 есть метод на UIViewController, "prefersStatusBarHidden". Чтобы скрыть строку состояния, добавьте этот метод в свой контроллер представления и верните YES:

- (BOOL) prefersStatusBarHidden
{
    return YES;
}
4 голосов
/ 19 апреля 2014

В этом случае мы используем 2 шага

На первом шаге: Добавьте в info.plist: «Просмотр внешнего вида строки состояния на основе контроллера» со значением «NO»

В секундушаг: используйте / вызовите этот код с делегатом UIImagePickerController

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
     if([navigationController isKindOfClass:[UIImagePickerController class]])
         [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
 }
1 голос
/ 22 октября 2015

В iOS 7 и более поздних версиях вы можете использовать следующий код для скрытия и отображения строки состояния,

@interface ViewController()

@property (nonatomic, getter=isStatusBarHidden) BOOL statusBarHidden;

@end

@implementation ViewController


  ... other codes

- (BOOL)prefersStatusBarHidden {
    return self.isStatusBarHidden;
}

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
    return UIStatusBarAnimationFade;
}

- (void)hideStatusBar {
    self.statusBarHidden = YES;
    [self setNeedsStatusBarAppearanceUpdate];
}

- (void)showStatusBar {
    self.statusBarHidden = NO;
    [self setNeedsStatusBarAppearanceUpdate];
}

@end
0 голосов
/ 19 октября 2013

Великая центральная диспетчеризация - ваш друг, при использовании этого метода вы не увидите строку состояния вообще, когда отображается сборщик или после него

- (void)hideStatusBar
{
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
    {
        [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    }
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self hideStatusBar];
    double delayInSeconds = 0.2;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [self hideStatusBar];
    });
}
0 голосов
/ 28 мая 2012

Кажется, есть ошибка в механизме отклонения UIViewController, связанного с UIImagePicker, с sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum.

Момент вызова состояния dismissModalViewController (плюс метод с завершением :) UIAскрытое свойство мгновенно изменяется с ДА на НЕТ, и оно отображается в момент перехода на шаг ...

Это действительно очевидно только для приложений, использующих полноэкранный режим.Мой текущий проект приложения делает, плюс я управляю фреймом представления контроллера представления перед представлением, таким образом, UIImagePicker НЕ полноэкранный.Это сделало ошибку ОЧЕНЬ очевидной.Я потратил 4-5 часов, чтобы определить причину, и это был окончательный определенный вывод, и ошибка НЕ ​​возникает ни для SourceType Camera, ни для PhotoLibrary.

Так что если вы хотите полностью полноэкранное приложение и хотите представитьUIImagePicker без ошибок, избегайте UIImagePickerControllerSourceTypeSavedPhotosAlbum

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...