Soy nuevo en el desarrollo de iOS. Estoy tratando de ocultar la barra de estado en UIImagePickerController. Cada vez que hago clic en «Tomar la foto», aparece la barra de estado. No ocultar. Quiero que la barra de estado se oculta sólo en UIImagePickerController.

Aquí está mi código,

- (IBAction)takePhoto:(UIButton *)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:picker animated:YES completion:NULL];
}


- (void)imagePickerController:(UIImagePickerController *)picker     didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    [self statusBar:YES];
    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.imageView.image = chosenImage;
    [picker dismissViewControllerAnimated:YES completion:NULL];

}


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:NULL];
}


-(void)statusBar:(BOOL)status
{
    [[UIApplication sharedApplication] setStatusBarHidden:status];
}

Cómo ocultar la barra de estado en UIImagePickerController?

  • intente con mi código siguiendo los pasos que he mencionado, usted será capaz de lograr su salida.
  • he publicado una solución en el dev foros como iOS7 es todavía bajo NDA. devforums.apple.com/message/888587#888587

14 Comentarios

  1. 19

    Tuve un problema por el que en iOS7 mi barra de estado no se estaba oculto. Me escondí mediante programación y todavía se muestra en iOS7, pero cuando corrió en iOS6 la barra de estado ocultar adecuadamente. Tienes que ir a la plist y agregue el siguiente:

    ‘controlador de vista basado en la barra de estado de la apariencia» y » NO.»

    Si desea que la barra de estado para volver a aparecer en otro punto de vista de los controladores y sólo se oculta en un determinado VC, luego se establece la barra de estado ocultas de SÍ cuando la VC de carga.
    Cuando la VC desaparecerá establece la barra de estado oculto en la parte trasera para NO.

    - (void)viewDidLoad
    {
    
        [super viewDidLoad];
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
    }

    y cuando el controlador va a desaparecer de agregar el siguiente para configurar la barra de estado ya no está oculta y se visualiza en la siguiente Vista:

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

    setStatusBarHidden:withAnimation: si quieres un poco de animación suave

    • Quiero mostrar todo a través de mi aplicación. Sólo quiero ocultar que en UIImagepickerController.
    • Yo había puesto la vista basada en el controlador de la barra de estado apariencia’ a NO en pList y [aplicación setStatusBarHidden:NO]; [aplicación setStatusBarStyle:UIStatusBarStyleDefault]; en el appDelegate. Esto funcionó para mí. Gracias.
    • estoy frente a un mismo problema.. pero la configuración de controlador de vista basado en la barra de estado para NO, ocultar la barra de estado, pero si u navegar por la foto que viene otra vez.
    • Creo que la respuesta por debajo de user2797041 es correcta.
    • esto no resuelve para uiimagepickercontroller sólo. sin embargo, usted puede CATransation bloques cada vez que se carga la vista en su lugar. [CATransaction begin]; [CATransaction setCompletionBlock:^{ [[UIApplication sharedApplication] setStatusBarHidden:YES]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; }]; imgPicker.sourceType = UIImagePickerControllerSourceTypesavedphotosalbum; [CATransaction cometer];
  2. 47

    Esto funcionó muy bien para mí:

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

    Edit: a partir de hoy me acabo de enterar de que en su información.plist, si usted acaba de copiar-pegar de controlador de vista basados en la barra de estado de la aparición de no trabajo … usted tiene que golpear a entrar en una propiedad, y desplácese hasta el último de ellos, por lo que tendrá la función autocompletar :controlador de vista basado en la apariencia de la barra de estado y un booleano, con no. He intentado varias veces pero no funciona solo en copiar. Que tengan un buen día.

    • Esto funciona perfectamente para iOS7.
    • Esto funciona perfectamente para iOS7,Pero al estallar la vista de fotos, la foto es en la parte inferior, el usuario tenía que desplazarse a la parte inferior
    • Esto funcionó formulario a mí también, gracias man 🙂
    • Con el ‘controlador de vista basado en la barra de estado de la apariencia» y se establece a NO, todavía tenía el problema, pero esto se ha solucionado el problema, gracias!!!
    • sí, gracias, que trabajó para mí 🙂
    • No esta desactivar la barra de estado para toda la aplicación una vez que la UIImagePickerController se abre? O no? Quiero desactivarlo para la vista de la cámara.
    • Esto funcionó para mí también ! Sin embargo, me di cuenta de un pequeño «fallo» cuando el UIImagePickerController apareció. Me enteré de que, si utiliza el siguiente método en su lugar, funciona sin ningún inconveniente: [[UIApplication sharedApplication] setStatusBarHidden:SÍ withAnimation:UIStatusBarAnimationNone];
    • Si esto Resuelve el Problema! Gracias
    • Aceptado respuesta no trabajo para mí, pero que este hecho +1
    • «setStatusBarHidden» es obsoleto en iOS 9.

  3. 33

    La solución que he encontrado para aplicaciones de construir a su alrededor :
    «Controlador de vista basados en la barra de estado de la apariencia» establecer a SÍ

    Hice añadir Categoría:

    //UIImagePickerController+StatusBarHidden.h
    #import <UIKit/UIKit.h>
    
    @interface UIImagePickerController (StatusBarHidden)
    @end
    
    //UIImagePickerController+StatusBarHidden.h
    #import "UIImagePickerController+StatusBarHidden.h"
    
    @implementation UIImagePickerController (StatusBarHidden)
    
    -(BOOL) prefersStatusBarHidden {
        return YES;
    }
    
    -(UIViewController *) childViewControllerForStatusBarHidden {
        return nil;
    }
    
    @end

    El método childViewControllerForStatusBarHidden se utiliza rara vez, pero la imagen del selector de hacer uso de ella, es por eso que puede causar algunos problemas

    También puede implementar UIViewController singleton, con el método que devuelve SÍ o NO, según su propiedad.
    Entonces su Vista controleller implementa childViewControllerForStatusBarHidden devolución de la anterior singleton.
    El cambio de singleton propiedad de cambiar automáticamente la barra de estado en la aplicación. También hay doble método childViewControllerForStatusBarStyle


    Sin embargo, para 2014, iOS8, ver este https://stackoverflow.com/a/18960308/294884

    • La documentación dice subclases no es compatible. Así que esta es una buena opción. Trabajó mucho (una vez me puse controlador de vista basado en la barra de estado de la aparición de nuevo para SÍ). Gracias.
    • Esto funciona para mí y la pieza fundamental es la sedimentación childViewControllerForStatusBarHidden para devolver nil. Todas las soluciones fueron todo-o-nada vis-a-vis de la barra de estado de la pantalla.
    • Usted salvó mi día el hombre! Como @farhadf escribió, childViewControllerForStatusBarHidden es la clave aquí.
    • Brillante. Funciona a la perfección.
  4. 18

    subclase UIImagePickerController … el mío es V1ImagePickerController …

    .m archivo se parece a esto:

    #import "V1ImagePickerController.h"
    
    @interface V1ImagePickerController ()
    
    @end
    
    @implementation V1ImagePickerController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)   //iOS7+ only
        {
            self.edgesForExtendedLayout = UIRectEdgeNone;
    
            [self prefersStatusBarHidden];
            [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
        }
    }
    
    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
    
    - (UIViewController *)childViewControllerForStatusBarHidden
    {
        return nil;
    }
    
    @end

    la childViewControllerForStatusBarHidden es la clave!

    • -(BOOL)prefersStatusBarHidden { return self.sourceType== UIImagePickerControllerSourceTypecamera ? SÍ : NO; }
    • Usted no necesita el viewDidLoad anular, no para la barra de estado de cosas de todos modos.
    • Ver también Masmor la respuesta aquí: stackoverflow.com/questions/18856627/… Es la única manera de hacerlo.
  5. 7

    Si quieres deshabilitar la barra de estado de plist, intente esto:

    1. Barra de estado está oculto inicialmente : SÍ
    2. Controlador de vista basados en la barra de estado de la apariencia : NO

    esto es necesario para iOS 7, que funciona para mí. No sé si hay algunas otras técnicas para hacer esto en iOS7. Conjunto de estas dos etiquetas en su información.plist.

    Cada vez que su viewcontroller aparece, en viewDidLoad o cuando la imagen del selector de controlador de acabados , el uso de este:

     - (void) imagePickerController:(UIImagePickerController *)picker1 didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
    {
       [[UIApplication sharedApplication] setStatusBarHidden:YES];
     .
     .
     .
     .
     }
    • Cuando se utiliza la imagen del selector de la barra de estado se desvanece… pero cuando haya terminado de utilizarlo, este código sólo se oculta al instante… yo sugeriría usar el siguiente código para agregar un fade out animación a la barra de estado de despido. [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
    • También! NO te olvides de poner ese código (ya sea el suyo o el mío) en su - (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker { así! En caso de que el usuario hace clic en «cancelar» y no elegir una foto!
  6. 6

    He utilizado Silvertaurus la respuesta anterior, pero con una pequeña modificación a la prefersStatusBarHidden método que me pareció muy útil:

    //UIImagePickerController+StatusBarHidden.h
    #import <UIKit/UIKit.h>
    
    @interface UIImagePickerController (StatusBarHidden)
    @end
    
    //UIImagePickerController+StatusBarHidden.h
    #import "UIImagePickerController+StatusBarHidden.h"
    
    @implementation UIImagePickerController (StatusBarHidden)
    
    -(BOOL) prefersStatusBarHidden {
        if (self.sourceType==UIImagePickerControllerSourceTypeCamera) {
            return YES;
        } else {
            return NO;
        }
    }
    
    -(UIViewController *) childViewControllerForStatusBarHidden {
        return nil;
    }
    
    @end

    Esto mantiene la barra de estado para la imagen selector cuando la cámara no se muestra.

    • Trabajó como un encanto. Gracias.
  7. 1

    Probar este

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

    Compruebe también este discusión.

    • no funciona para mí. Aparece la barra de estado cada vez que hago clic en «Tomar la Foto».
  8. 1

    Por favor, intente esto.

    • Configuración de un delegado para la UIImagePickerController

    • ocultar la barra de estado en la del delegado
    navigationController:didShowViewController:animación: función.

    E. G:

    -(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
    {
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
    • Es un trabajo como un encanto amigo…!!!
  9. 1

    Usted puede hacerlo con una categoría:

    @interface UIImagePickerController (HideStatusBar)
    
    @end
    
    
    @implementation UIImagePickerController (HideStatusBar)
    
    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
    
    - (UIViewController *)childViewControllerForStatusBarHidden
    {
        return nil;
    }
    
    @end

    Fuente: https://gist.github.com/psobko/9493473

    • Yo recomendaría tomar este mismo método en una subclase, pero este método trabaja definitivamente! Gracias!
  10. 0
    -(IBAction)takePhoto:(UIButton *)sender
    {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self statusBar:TRUE];
        [self presentViewController:picker animated:YES completion:NULL];
    }
    
    
    -(void)imagePickerController:(UIImagePickerController *)picker      didFinishPickingMediaWithInfo:(NSDictionary *)info
    {        
        UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
        self.imageView.image = chosenImage;
        [self statusBar:FALSE];
        [picker dismissViewControllerAnimated:YES completion:NULL];
    }
    
    
    -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    {
        [self statusBar:FALSE];
        [picker dismissViewControllerAnimated:YES completion:NULL];
    }
    
    
    -(void)statusBar:(BOOL)status
    {
        [[UIApplication sharedApplication] setStatusBarHidden:status];
    }

    que pueden ayudarte a lograr lo que desea.

    • He intentado este código. En el controlador de vista, la barra de estado consigue ocultar.Pero en UIImagePickerController, aparece de nuevo.
    • bueno estoy editando mi respuesta de acuerdo a su pregunta ahora por favor, intenta de esta manera y eliminar otros códigos que has hecho
    • Sí, Seguro. Será una gran ayuda.
    • intente con mi código editado y asegúrese de no llamar a la barra de estado método en cualquier otro lugar.
    • trató de este código. barra de estado aún no aparece.
    • No sé qué es lo que falta ahora la única forma es si usted podría compartir su proyecto, de manera que me puedes echar un vistazo lo que está mal o pegar su completa viewController.m archivo en su pregunta.

  11. 0

    En mi caso tuve que usar presentViewController para mostrar UIImagePickerViewController (iOS7).

    1 – Vista de Conjunto basada en el controlador de la barra de estado apariencia NO en .plist
    2 – Crear una categoría para UIImagePickerController y en viewDidLayoutSubviews:

    - (void)viewDidLayoutSubviews{
        [super viewDidLayoutSubviews];
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }

    3 – Añade los dos métodos siguientes a la categoría:

    - (BOOL)prefersStatusBarHidden{
        return YES;
    }
    
    - (UIViewController *)childViewControllerForStatusBarHidden{
        return nil;
    }

    Espero que esto ayude.

  12. 0

    creo que he resuelto esto de una manera bastante simple sin subclases y el uso de plist.
    sólo oculta para UIImagePickerController.

    este ejemplo es para sacar la foto gallary sólo, pero me imagino que se puede aplicar de la misma manera en cualquier lugar en uiimagepickercontroller

    - (void)showGallary
    {
      [CATransaction begin];
      [CATransaction setCompletionBlock:^{
          [[UIApplication sharedApplication] setStatusBarHidden:YES];
          [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
      }];
    
      imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    
      [CATransaction commit];
    }
  13. 0

    Quería tener la barra de estado escondida todo el tiempo, abrir la imagen del selector de la muestra. Para ocultar de nuevo la siguiente trabajado para mí, como de iOS 8:

    -(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
    {
        [self dismissViewControllerAnimated:YES completion:^{
            [[UIApplication sharedApplication] setStatusBarHidden:YES];
        }];
    }
    
    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        [self dismissViewControllerAnimated:YES completion:^{
            [[UIApplication sharedApplication] setStatusBarHidden:YES];
        }];
    
        //do stuff with photo
    }

    He View controller-based status bar appearance conjunto para NO

    • Esto es muy interesante, yo tengo el mismo problema pero a la inversa. Quiero que la barra de estado se muestra, pero la UIImagePicker oculta.

Dejar respuesta

Please enter your comment!
Please enter your name here