Лентата на състоянието се припокрива в изгледа на камерата на 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