Строка состояния перекрывается с представлением камеры UIImagepickercontroller в iOS 7 и iOS 8

я использую UIImagepickercontroller, чтобы делать фотографии и выбирать существующие фотографии, когда появляется вид с камеры, верхняя часть камеры закрывается белой строкой состояния. Как я могу удалить строку состояния или скрыть строку состояния. Многие из них говорят, что это ошибка iOS 7, она была исправлена ​​​​в iOS 7.1, но я все еще сталкиваюсь с этой проблемой.

Это мой код, чтобы показать imagepickerController

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = (id)self;
imagePicker.sourceType = (buttonIndex == actionSheet.firstOtherButtonIndex ?  

UIImagePickerControllerSourceTypeCamera : UIImagePickerControllerSourceTypePhotoLibrary);
[self.viewController presentViewController:imagePicker animated:YES completion:nil]; 

Также я попытался с помощью приведенных ниже кодов скрыть строку состояния.

 - (void)navigationController:(UINavigationController *)navigationController    
  willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
 {
   [[UIApplication sharedApplication] setStatusBarHidden:YES];
   }

Этот

 -(BOOL) prefersStatusBarHidden {
   return YES;
 }

И это в делегате

 [UIApplication ShareApplication]SetStatusbarHidden:YES];

Сейчас я работаю с ios8, и такое поведение происходит во всех версиях ios. Пожалуйста, помогите мне.


person Madhu    schedule 19.09.2014    source источник
comment
У меня такая же проблема. В iOS7 я решил это, создав подкласс UIImagePickerController и переопределив PrefersStatusBarHidden на YES. Но на iOS8 он просто перестал работать. Если вы найдете решение, пожалуйста, дайте мне знать!   -  person hybridcattt    schedule 30.09.2014


Ответы (1)


На самом деле проблема в моем rootviewcontroller. Я создаю строку состояния с помощью UIView и программно устанавливаю ее ограничения для альбомной и портретной ориентации.

- (void)setTopBar {
if(topBar == nil && [[UIApplication sharedApplication] keyWindow] != nil) {
    topBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
    topBar.backgroundColor = navController.view.backgroundColor;
    topBar.tag = topBarViewTag;
    UIView *containerView = [[UIApplication sharedApplication] keyWindow];
    [containerView addSubview:topBar];
    [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view(20)]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil   views:@{@"view" : topBar}]];
    [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[view]|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil   views:@{@"view" : topBar}]];
    [containerView layoutSubviews];
}

}

поэтому, когда я прокомментировал вышеуказанный метод в ViewwillAppear, строка состояния не отображается, поэтому проблема связана с моим кодом.

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

person Madhu    schedule 06.10.2014