with uiimagepickercontrollerdelegate how and iphone uiimagepickercontroller statusbar

iphone - how - uiimagepickercontrollerdelegate swift 4



iOS SDK: ¿Cómo recuperar la barra de estado cuando se utiliza UIImagePickerController? (6)

Tan pronto como agrego una subvista UIImagePickerController a mi vista, la barra de estado desaparece y no puedo recuperarla. ¿Hay alguna manera de mantener la barra de estado visible?

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; [self.view addSubview:imagePicker.view]; [imagePicker viewWillAppear:YES]; [imagePicker viewDidAppear:YES]; [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];


Agregue su UIImagePicker a la vista raíz (es decir, un controlador de navegación o TabbarController)

[self.tabBarController presentModalViewController:imagePickerController animated:YES];

Después de eso puedes usar

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { // do your stuff [picker dismissModalViewControllerAnimated:YES]; }

para cerrar su ImagePicker.


Después de leer esto y no encontrar ninguna de las respuestas que funcionaron, logré que funcionara haciendo lo siguiente:

• Configuración de un delegado para el UIImagePickerController
• En ese delegado, oculte la barra de estado en el navigationController:didShowViewController:animated: de navigationController:didShowViewController:animated: del delegado navigationController:didShowViewController:animated: function.

P.EJ:

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


La solución de la respuesta aceptada quedó obsoleta mientras tanto.

Utilizar

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

en lugar de

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];

Los valores válidos para el parámetro de animación son UIStatusBarAnimationNone , UIStatusBarAnimationFade , UIStatusBarAnimationSlide . Los detalles se encuentran en la documentation .


Ninguna de las soluciones funcionó en iOS 5.1.1 La solución de Tim funcionó en iOS 4.2.1 La única forma en que pude solucionar el problema en iOS 5.1.1 fue así

-(void)viewDidAppear:(BOOL)animated { double delayInSeconds = 0.01; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [[UIApplicationsharedApplication] setStatusBarHidden:NO]; });

que es muy hacky y equivocado

Pasé medio día buscando una solución y luego decidí usar el enfoque AVFoundation y me tomó una hora implementar la misma captura de fotos básica que necesitaba usando AVCaptureSession y AVCaptureStillImageOutput. Y también funciona mejor: AVCaptureSession comienza más rápido que UIImagePickerController y AVCaptureVideoPreviewLayer tiene una tasa de cuadros mucho mejor en los dispositivos modernos en comparación con la vista previa de la cámara UIImagePicker.


También tuve que hacer lo mismo en una aplicación de cámara. Aparentemente, además de configurar la barra de estado para que no se oculte, también debe restablecer su estilo después de que la vista de la cámara la haga desaparecer. Prueba esto:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];


bueno, sé que no debes hacer esto, pero si subclase UIImagePickerController, puedes poner eso en tu clase personalizada:

-(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:NO]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; }