He probado la configuración de la Información.plist ‘controlador de Vista basado en la barra de estado de la apariencia» NO, he intentado llamar

[[UIApplication sharedApplication] setStatusBarHidden:YES];

He intentado

-(BOOL)prefersStatusBarHidden{ 
  return YES;
}

He tratado de iniciar el selector con

[self presentViewController:picker animated:NO completion:^{
  [[UIApplication sharedApplication] setStatusBarHidden:YES];
}

Y aún así, hay una barra de estado de la superposición de los controles de la cámara. Es sólo allí en iOS 7 sin embargo.

La barra de estado no aparece en ninguna otra parte en la aplicación. Me siento como que me falta una pieza importante del rompecabezas de aquí, y ninguna cantidad de la lectura sobre el Controlador de Vista o UIImagePickerController me ha ayudado a encontrar dicho pieza del rompecabezas.

Estoy esperando que algún otro haya un poco de luz en este problema. Gracias.

EDIT: Mi efecto deseado es que la Barra de Estado muestra todo en la aplicación, excepto en la cámara selector y un par de otros «fuera» (Correo electrónico) de la vista de los controladores de la usamos.

OriginalEl autor alphanumeric character | 2013-09-17

9 Comentarios

  1. 17

    Si quieres mantener ViewController-Based Status Bar Appearance, subclase UIImagePickerController y reemplazar prefersStatusBarHidden y childViewControllerForStatusBarHidden.

    @interface NoStatusBarImagePickerController : UIImagePickerController
    @end
    
    @implementation NoStatusBarImagePickerController
    
    - (BOOL)prefersStatusBarHidden {
      return YES;
    }
    
    - (UIViewController *)childViewControllerForStatusBarHidden {
      return nil;
    }
    
    @end
    
    Desde la apple docs en UIImagePickerController: Importante: La UIImagePickerController clase admite el modo de retrato único. Esta clase está diseñada para usarse como es y no admite la creación de subclases. El punto de vista de la jerarquía de esta clase es privada y no debe ser modificado, con una excepción. Puede asignar una vista personalizada para el cameraOverlayView de la propiedad y el uso que el fin de presentar información adicional o gestionar las interacciones entre la interfaz de la cámara y su código.
    Así que por favor deje de upvoting esta respuesta.
    Yo estaría de acuerdo si alguna de las selector de métodos fueron anulados, pero sólo la base de UIViewController comportamiento es personalizado, y en una forma prevista. A cada uno su propia interpretación de la documentación, pero no creo que estoy violando ninguna norma en el espíritu, y ciertamente espero que Apple SDK de aplicación es de al menos así se comportó suficiente en términos de encapsulación que esto es aceptable.
    Bien, independientemente de violar el espíritu de la documentación o no, aún no funciona para solucionar mi problema. Gracias por tu sugerencia, aunque fue un digno intento!
    OBRAS … Alfa, tengo que absolutamente de acuerdo con masmor. Esto no es «realmente» la creación de subclases. No estás en lo más mínimo cambiar nada en la clase. Usted sólo – vamos a ponerlo de esta manera – «cambiar preferencias» en relación con el controlador de vista. Esta es una increíble respuesta, masmor, gracias. De verdad, gracias.

    OriginalEl autor

  2. 7

    Intente esto :

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

    en el appDelegate.

    Segunda línea de arriba: traté de que en mi aplicación delegado, sin éxito.
    Mi pruebe a añadir esta en su clase de la aplicación de UIImagePickerDelegate. Esto es en realidad un método de UINavigationControllerDelegate.
    Esta solución funciona para mí, pero usted tiene que añadir este UINavigationControllerDelegate método en la clase en la que están implementando UIImagePickerDelegate y aquí la tienes.

    OriginalEl autor

  3. 3

    Hay una configuración adicional que usted necesita para encender, a partir de iOS 7. En la aplicación de la Información.plist, agregue una línea para View controller-based status bar appearance, un Booleano, y configurarlo para que NO.

    Primera línea allí – he intentado.
    Bug en iOS 7, debe ocultar la barra de estado al cerrar el selector de imagen. Hacer una subclase y la puso en viewWillDisappear.
    No quiero que la barra de estado presentes en la UIImagePickerController. Yo quiero en mi aplicación. He intentado crear subclases de la UIImagePickerController, pero perfersStatusBarHidden nunca se llama, y la barra de estado muestra aún.
    Definitivamente, usted no debe hacer esto. Que configuración es sólo para una especie de extraño mantener la compatibilidad con versiones antiguas de iOS. Va a causar grandes problemas. Simplemente hacer masmor la solución: es muy simple. Simplemente haga clic en «nuevo Archivo…» y elige «Objetivo de la Clase C de…» en Xcode .. tarda 5 segundos.

    OriginalEl autor

  4. 1

    La PsychoDad método que funciona para mí. Pongo el siguiente

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    

    en el método viewWillDisappear de la subclase de UIImagePickerController.

    Pero la Alexandru Dranca método es mejor porque de esa manera la barra de estado no aparece en absoluto!

    Sin embargo creo que esto es un BUG de IOS 7…

    OriginalEl autor

  5. 0

    «Controlador de vista basados en la barra de estado de la apariencia» se establece a NO, a mi me funciona.

    ¿usted se propuso programetically?
    No,es en ‘p-‘ lista de archivos
    QUIERO que la barra de estado cada vez que en mi aplicación, excepto en el UIImagePickerController. Yo no puedo evitar que se muestra allí, y se superpone con el selector de controles. También, he tratado de establecer esta en la info.plist, y aunque HIZO quitar la barra de estado de todos los que en mi app, yo no era capaz de conseguir que se muestran, incluso con el uso de algunos de los otros métodos que se debe hacer que aparezca. Tiendo a estar de acuerdo que este es un iOS7 error.

    OriginalEl autor

  6. 0

    debe dejar la

    -(BOOL)prefersStatusBarHidden{ 
      return YES;
    }
    

    y también agregar este

    -(void)viewWillAppear:(BOOL)animated {
        ...
        [self setNeedsStatusBarAppearanceUpdate];
        ...
    }
    

    OriginalEl autor

  7. 0

    He estado en este error para la reparación de ToonPAINT para iOS7 y lo que finalmente se trabajó aparte de la configuración de las dos cosas en la Información.plist archivo (barra de Estado está oculto inicialmente = NO; controlador de Vista basado en la apariencia de la barra de estado = NO)

    fue cambiar el estilo de la barra de estado (a pesar de que yo no quería que se muestra en todos), no fue suficiente para ocultar la barra de estado; suena como una iOS7 error.

    En la aplicación delegado agregar:

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

    {NB .. UIStatusBarStyleBlackTranslucent está en desuso, probablemente el uso de UIStatusBarStyleLightContent si intentar este}

    Tiendo a estar de acuerdo con esto de ser un bug de iOS 7. He intentado un sinnúmero de diferentes formas de arreglar esto, sin una resolución todavía.

    OriginalEl autor

  8. 0

    Creo que la respuesta a esta pregunta es «Esto es un bug de iOS 7». Ninguno de los métodos aquí ayudó en nuestro caso, y varias personas han tratado de solucionar esto ahora.

    No puedo decir qué pasos para reproducir el problema, pero he visto lo suficiente de gente ahí fuera con el mismo problema, que creo que es seguro decir que este es en realidad un bug de iOS 7. La mayoría de la gente puede solucionar este problema con los múltiples métodos mencionados anteriormente. Rara vez, sin embargo, usted no puede arreglar de esa manera. Espero que si usted está leyendo esto, usted no es también una de esas personas.

    De hecho, me acaba de llegar una revisión.

    OriginalEl autor

  9. 0

    Esto es lo que ha funcionado para mí:

    @implementation ViewController {
        BOOL hideStatusBar;
    }
    
    - (void)showCamera {
        UIImagePickerController *camera = [[UIImagePickerController alloc] init];
        camera.modalPresentationStyle = UIModalPresentationCurrentContext;
        camera.sourceType = UIImagePickerControllerSourceTypeCamera;
        camera.delegate = self;
    
         hideStatusBar = YES;
        [self setNeedsStatusBarAppearanceUpdate];
        [self presentViewController:camera animated:YES completion:nil];
    }
    
    -(BOOL)prefersStatusBarHidden{
        return hideStatusBar;
    }
    

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here