En iOS 7 el UIStatusBar ha sido diseñado de una manera que se funde con la vista como este:

iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?
(GUI diseñada por Tina Tavčar)

  • Es genial, pero algo va a estropear su vista cuando tengo algo en la parte de arriba de su punto de vista, y se convierte en superpuesta con la barra de estado.

  • Hay una solución simple (como la configuración de una propiedad en info.plist) que pueden cambiar la forma en que funciona [no se superponen] volver a cómo es en iOS6?

  • Sé que una solución más sencilla es tener self.view.center.x + 20 puntos por cada controlador de vista, pero el cambio de ellos tornillo de otras dimensiones de seguridad (que tienen diferentes self.view.center.x puede causar problema a la costumbre desemboca, etc.) y de repente se convierte en un trabajo tedioso que es mejor evitar.

  • Que realmente va a estar contento si alguien puede proporcionarme un one-liner solución para esto.

P. S. sé que puedo ocultar la barra de estado, haciendo las cosas como tener

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

En didFinishLaunchingWithOptions método, pero eso es una solución, un atajo que evita el problema, así que no considero que una solución real.

  • Lamentablemente negro barras de estado están en desuso en ios 7
  • Yo voy a estar de acuerdo con @GangstaGraham. Los colores son sólo precioso! Para responder a tu pregunta, me temo que no puede. La razón de la barra de estado está diseñado como que ahora es debido a la translucidez es el nuevo iOS cosa y está diseñado para dar «profundidad» a una solicitud diciendo que es en la parte superior de algo, así que hay algo debajo.
  • ¿Has probado la configuración de preferredStatusBarStyle a UIStatusBarDefault? Checkout iOS 7 UIViewController Documentación
  • Tener UIStatusBarDefault para la barra de estado sólo hace que su contenido sea de color negro. No va a hacer que la forma en que las funciones de regreso a cómo es en iOS6.
  • Suerte con esto? Me encanta iOS7 pero esto me está volviendo loco!
  • Por favor, compruebe si la Manzana iOS 7 Transition Guide (developer.apple.com/library/prerelease/ios/documentation/…), específicamente la «Actualización de la interfaz de usuario» en la sección de puede ayudar.
  • Hice un fragmento, gist 6554189, para evitar que la nueva «barra de estado de la función de superposición». Se utiliza el diseño automático y el recientemente introducido superior de la guía de diseño. Funciona sólo con autodiseño. Yo no prueba dentro del contenedor de vista de los controladores, pero podría ser un buen punto de partida.
  • Archy Espera, ¿Cómo se te corder / efecto de sombra sobre su punto de vista ? Traté de tener el mismo efecto desde iOS7 está disponible para los desarrolladores, y mi manera de hacerlo es menos sexy que el tuyo!! 🙂
  • Puedo publicar respuesta allí, stackoverflow.com/questions/18917377/… Ahora la pregunta congelado.
  • Sólo por curiosidad, ¿cuál es el nombre de la aplicación? tiene una muy buena interfaz de usuario.
  • Este enlace tiene información interesante sobre este tema: doubleencore.com/2013/09/…
  • El uso de esta respuesta demasiado stackoverflow.com/a/19025547/1545180
  • ¿Cómo te las arreglas para conseguir la barra de estado transparente? Puedo conseguir uno negro en ios6 aplicación emigraron a ios7 y se añade la barra de estado a través de:si ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { [aplicación setStatusBarStyle:UIStatusBarStyleLightContent]; auto.de la ventana.clipsToBounds =SÍ; auto.de la ventana.frame = CGRectMake(0,20,auto.de la ventana.marco.tamaño.anchura,de auto.de la ventana.marco.tamaño.altura); auto.de la ventana.límites = CGRectMake(0,0, auto.de la ventana.marco.tamaño.anchura, de auto.de la ventana.marco.tamaño.altura); }
  • Si usted quiere olvidarse de lo que hay de nuevo en iOS 7 y el uso de iOS 6 y anteriores estilo, echa un vistazo a esta respuesta

InformationsquelleAutor | 2013-08-18

25 Comentarios

  1. 449

    Esta es la cruz-publicado desde un blog post que escribí, pero aquí está el resumen completo en la barra de estado, barras de navegación, y el contenedor de vista de los controladores en iOS 7:

    1. No hay manera de preservar el iOS 6 de estilo de diseño de la barra de estado. La barra de estado siempre se superponen su aplicación en iOS 7

    2. No hay que confundir la barra de estado de la apariencia con el estado de la barra de diseño. La apariencia de luz (o predeterminado) no afecta a la forma de la barra de estado se presenta (cuadro/altura/se superponen). Es importante señalar además que el sistema de la barra de estado ya no tiene ningún color de fondo. Cuando la API se refiere a UIStatusBarStyleLightContent, se significa que el texto blanco sobre un fondo claro. UIStatusBarStyleDefault es el texto negro sobre un fondo claro.

    3. Barra de estado de la apariencia es controlada a lo largo de uno de los dos mutuamente-exclusiva caminos: puede establecer mediante programación en la manera tradicional, o UIKit actualizará la apariencia para usted, basado en algunas de las nuevas propiedades de UIViewController. La última opción está activada por defecto. Verificación de la aplicación plist valor de «ViewController Basado en la Apariencia de la Barra de Estado» para ver cuál es el que usted está utilizando. Si este valor se establece en SÍ, cada nivel superior de controlador de vista de su aplicación (aparte de un estándar de UIKit contenedor de vista controlador) debe reemplazar preferredStatusBarStyle, devolviendo el defecto o la luz de estilo. Si edita el plist valor de a NO, entonces usted puede manejar la barra de estado de la apariencia mediante el conocido UIApplication métodos.

    4. UINavigationController va a alterar la altura de su UINavigationBar a 44 puntos o 64 puntos, dependiendo de un lugar extraño e indocumentados conjunto de restricciones. Si el UINavigationController detecta que la parte superior de la vista en su marco es visualmente contiguos con su UIWindow la parte superior, a continuación, dibuja su barra de navegación, con una altura de 64 puntos. Si la vista en su parte superior no es contigua con la UIWindow superior (aunque fuera por sólo un punto), a continuación, dibuja su barra de navegación en el modo «tradicional», con una altura de 44 puntos. Esta lógica se realiza por UINavigationController incluso si se trata de varios niños abajo en el interior del controlador de vista de la jerarquía de su aplicación. No hay manera de evitar este comportamiento.

    5. Si el suministro de una barra de navegación personalizada de la imagen de fondo que es sólo el 44 puntos (88 píxeles) de altura, y el UINavigationController opinión de los límites de los partidos de la UIWindow límites (como se discutió en el #4), la UINavigationController va a dibujar la imagen en el fotograma (0,20,320,44), dejando a los 20 puntos de color negro opaco espacio por encima de su imagen personalizada. Esto puede confundir a pensar que son un ingenioso programador que omite la regla #1, pero usted se equivoca. La barra de navegación es todavía 64 puntos de altura. La incorporación de un UINavigationController en una diapositiva a revelar el estilo de vista de la jerarquía hace que este muy claro.

    6. Cuidado de la confusamente llamado edgesForExtendedLayout propiedad de UIViewController. Ajuste de edgesForExtendedLayout no hace nada en la mayoría de los casos. La única manera de UIKit utiliza esta propiedad es si se agrega un controlador de vista a un UINavigationController, entonces el UINavigationController utiliza edgesForExtendedLayout para determinar si es o no su hijo controlador de vista debe ser visible debajo de la barra de navegación /barra de estado área. Configuración de edgesForExtendedLayout en el UINavigationController en sí no hace nada para alterar o no, si la UINavigationController tiene un 44 o 64 punto alto de la barra de navegación de la zona. Ver #4 para que la lógica. Diseño Similar lógica se aplica a la parte inferior de su vista cuando se utiliza una barra de herramientas o UITabBarController.

    7. Si todo lo que usted está tratando de hacer es evitar su costumbre niño controlador de vista de underlapping la barra de navegación cuando dentro de un UINavigationController, a continuación, establezca edgesForExtendedLayout a UIRectEdgeNone (o, al menos, una máscara que excluye UIRectEdgeTop). Establezca este valor tan pronto como sea posible en el ciclo de vida de su controlador de vista.

    8. UINavigationController y UITabBarController también tratará de la almohadilla de la contentInsets de las vistas de tabla y de la colección de vistas en su subvista jerarquía. Esto se hace de una manera similar a la barra de estado de la lógica de la #4. Hay una manera programática de la prevención de este, mediante el establecimiento de automaticallyAdjustsScrollViewInsets NO en su tabla de puntos de vista y las vistas de colección (el valor predeterminado es yes (SÍ). Esto plantea algunos problemas graves para Susurro y Contestación, ya que el uso de contentInset ajustes para controlar el diseño de la tabla de puntos de vista en respuesta a la barra de herramientas y movimientos del teclado.

    9. A reiterar: no hay manera de volver a iOS 6 estilo de la barra de estado de la lógica de diseño. Con el fin de aproximar este, tienes que mover todo a la vista de los controladores de tu aplicación en un contenedor de vista que es compensado por 20 puntos de la parte superior de la pantalla, dejando un intencionalmente negro detrás de la barra de estado para simular la antigua apariencia. Este es el método que usaron en la Contestación y el Susurro.

    10. Apple está empujando muy duro para asegurarse de que no trate de hacer #9. Ellos quieren que nosotros para el rediseño de todas nuestras aplicaciones para underlap la barra de estado. Hay muchos argumentos convincentes, sin embargo, tanto la experiencia de usuario y razones técnicas, ¿por qué esto no es siempre una buena idea. Usted debe hacer lo que es mejor para los usuarios y no simplemente seguir la fantasía de la plataforma.

    • Sólo quería añadir que se puede añadir una restricción a lo que está en la parte superior de la vista para ser conectado a la parte superior guía de diseño – esto dejará un espacio en blanco detrás de la barra de estado (que puede rellenar con cualquier color que usted quiera), pero también permitirá a la vista para que se ajuste automáticamente a la posición correcta en iOS 6, así. De esa manera usted no tiene que ajustar manualmente la posición de sus puntos de vista en el código.
    • Esa es una solución brillante. Usted ha expuesto mi ignorancia en el diseño Automático. Mejor en eso.
    • ¿Cómo lo hiciste @BreadicalMD?
    • Este fue genial. Sólo una cosa para agregar wrt #6. Parece que si un translúcido de la barra de navegación se utiliza, vista a los controladores con una vista de base de UIScrollView o derivados (UITableView, UIWebView) son gestionados adecuadamente por defecto – no meter debajo de la barra de navegación, pero cuando el desplazamiento, su contenido no pasar por debajo. El «edgesForExtendedLayout» parece útil cuando usted todavía desea una translúcido de la barra de navegación, pero tiene un no-UIScrollView vista de base en el controlador de vista. De todos modos, gracias de nuevo por esto, fue muy útil
    • Si el lugar del objeto en el espacio debajo de la parte superior guía de diseño del borde, puede utilizar la restricción de control para agregar un espaciado vertical de restricción para el vecino más cercano, que ahora será el superior de la guía de diseño. Alternativamente, usted puede utilizar ctrl+clic desde su objeto en la parte superior guía de diseño para agregar un espaciado vertical de la restricción de forma explícita.
    • stackoverflow.com/q/18980925/1545180 esta respuesta puede ayuda usted.
    • Una parte que no entiendo es que -topLayoutGuide no está disponible en iOS 6, así que eso no significa que usted necesita para utilizar diferentes Auto restricciones de Diseño en iOS 7 y 6?
    • Tan cerca que puedo decir de XCode sabe esto y se ajusta automáticamente para usted. En iOS 6, la restricción a la parte superior guía de diseño automáticamente se convierte en una restricción a la parte superior de la vista.
    • No hay nada malo en tan sólo lo que el tamaño de la UIWindow la aplicación se ejecuta en el 20pt más pequeños y en movimiento de la 20pts abajo?
    • Gran respuesta…Pero tengo una duda 1) UINavigationController la alteración de la altura de la parte.Por favor explicar un poco más. gracias
    • Si usted consulta el UINavCont de la barra de navegación de su altura, se devolverá a 44 puntos. Pero visualmente, es obvio que la barra de navegación está siendo dibujado (en la ventana de coordenadas) a partir de un origen de (0,0) a una esquina inferior derecha de (320,64). Usted puede obtener la altura real utiliza la vista de la topLayoutGuide propiedad de la UIViewController que es la parte visible de controlador de vista de la UINavController. Es sólo cuando a) la barra de estado está oculto o b) la UINC la vista del frame no contiguos con el UIScreen límites que la lata de barras se dibujan en un 44 punto de altura.
    • Podría usted ver esta pregunta para mí: stackoverflow.com/questions/20039539/… debido a su poco diferente, estoy usando un UITabBarController y nada parece funcionar a la derecha. Tendría que eliminar la barra de estado completamente o si puedo agregar espacio en la parte superior, se come el espacio de mi barra de pestañas.
    • su tgr solución.
    • Se merece un 10 votos solo por la pista sobre la barra de navegación personalizada renderización en segundo plano de pistas.
    • yo haveing problema cuando mi UIImagePicker permitir la edición que aparecen y a la hora de elegir la imagen, a continuación, después de despedir a mi statubar va a cambiar todo su color de fondo de ir de negro andnavigation en la barra de estado
    • #4 me hizo llorar un poco
    • Y no web-devs odio CSS porque ¿por qué?
    • Quiero señalar el origen y el contenido debajo de la barra de estado no siempre 20 (tal como se hace referencia en el punto 5 y 9). Se determina por [[UIApplication sharedApplication] statusBarFrame].size.height como otras aplicaciones, tales como la aplicación del teléfono, puede cambiar la altura.

  2. 122

    Actualizaciones en 19 de septiembre 2013:

    fija el escalado de errores mediante la adición de
    self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);

    corregidos los errores en la NSNotificationCenter declaración

    Actualizaciones en 12 de Sep de 2013:

    corregido UIViewControllerBasedStatusBarAppearance a NO

    añadido una solución para las aplicaciones con la rotación de la pantalla

    añadido un método para cambiar el color de fondo de la barra de estado.

    No es, aparentemente, no hay manera de revertir el iOS7 barra de estado de vuelta a cómo funciona en iOS6.

    Sin embargo, siempre podemos escribir algunos de los códigos y gire la barra de estado en iOS6, y que este es el camino más corto que se me ocurre:

    1. Conjunto UIViewControllerBasedStatusBarAppearance a NO en info.plist (Para dejar de tener la vista de los controladores de ajuste de la barra de estado estilo, para que podamos establecer la barra de estado estilo mediante el uso de la UIApplicationstatusBarStyle método).

    2. En el AppDelegate del application:didFinishLaunchingWithOptions, llamada

      if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
          [application setStatusBarStyle:UIStatusBarStyleLightContent];
          self.window.clipsToBounds =YES;
          self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
      
          //Added on 19th Sep 2013
          self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
      }
      return YES;
      

    con el fin de:

    1. Comprobar si es iOS 7.

    2. Establecer la barra de estado del contenido a ser de color blanco, en contraposición a UIStatusBarStyleDefault.

    3. Evitar subvistas cuyos marcos se extienden más allá de los límites visibles de la muestra (por las vistas de la animación en la vista principal desde la parte superior).

    4. Crear la ilusión de que la barra de estado ocupa espacio, como es en iOS 6, por el desplazamiento y el tamaño de la aplicación del marco de la ventana.

    De las aplicaciones con la rotación de la pantalla,

    uso NSNotificationCenter para detectar los cambios de orientación mediante la adición de

    [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(applicationDidChangeStatusBarOrientation:)
    name:UIApplicationDidChangeStatusBarOrientationNotification
    object:nil];
    

    en if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) y crear un nuevo método en el AppDelegate:

    - (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
    {
        int a = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
        int w = [[UIScreen mainScreen] bounds].size.width;
        int h = [[UIScreen mainScreen] bounds].size.height;
        switch(a){
            case 4:
                self.window.frame =  CGRectMake(0,20,w,h);
                break;
            case 3:
                self.window.frame =  CGRectMake(-20,0,w-20,h+20);
                break;
            case 2:
                self.window.frame =  CGRectMake(0,-20,w,h);
                break;
            case 1:
               self.window.frame =  CGRectMake(20,0,w-20,h+20);
        }
    }
    

    De modo que cuando los cambios de orientación, se activará una instrucción switch para detectar la aplicación de la orientación de la pantalla (Vertical, de arriba a Abajo, el Paisaje de la Izquierda, o Paisaje a la Derecha) y el cambio en la aplicación del marco de la ventana, respectivamente, para crear el iOS 6 barra de estado de la ilusión.

    Para cambiar el color de fondo de la barra de estado:

    Agregar

     @property (retain, nonatomic) UIWindow *background;
    

    en AppDelegate.h para hacer background una propiedad en la clase y prevenir el ARCO de cancelar la asignación. (Usted no tiene que hacerlo si no estás usando el ARCO.)

    Después de que usted sólo tiene que crear la UIWindow en if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1):

    background = [[UIWindow alloc] initWithFrame: CGRectMake(0, 0, self.window.frame.size.width, 20)];
    background.backgroundColor =[UIColor redColor];
    [background setHidden:NO];
    

    No olvides @synthesize background; después de @implementation AppDelegate!

    • Oh, si desea que la barra de estado negra, el uso de la UINavigation aspecto de la Barra del proxy, [[UINavigationBar apariencia] setBackgroundImage:someImage] y, a continuación, la barra de estado se vuelve de color negro, no sé cuánto tiempo va a durar, porque aunque parece un error, pero yo sólo pensé en hacerle saber que de todos modos en caso de que todavía estaban interesados en una barra de estado negra.
    • De esta forma se rompe en la rotación. sólo un heads up
    • Recomiendo la modificación de Espaciado Vertical de la Restricción de 0 a 20 programación. Se trabajará en la rotación.
    • Que el trabajo para el diseño automático. En realidad estaba buscando un no-diseño automático de la solución, y se encontró que el uso de la Interfaz del Generador y el iOS 6/7 Deltas de nuevo en xcode 5.
    • podrías compartir el trabajo en torno al uso de los deltas por favor
    • Voy a actualizar esto cuando tengo un poco de tiempo para escribir una respuesta: en iOS 7 fecha límite infierno en el momento.
    • Se trata de mostrar sólo la barra de estado negra..
    • Al mostrar sólo la barra de estado negra ¿te refieres a los contenidos (como el tiempo) no se muestran?
    • Si ese es el caso, acaba de establecer UIViewControllerBasedStatusBarAppearance a NO en lugar de YES. No he entendido la documentación y el pensamiento YES que hacer el trabajo. He corregido ahora.
    • Gracias por la rápida respuesta, enfermo de verificación y hacerle saber +1
    • todavía es negro,
    • Que extraño. Son sus iOS7 & Xcode la última versión (semillas GM)? Si su OS7 o Xcode es aún la versión beta puede haber errores.
    • Se trata de mostrar barra de estado contenido en color blanco con blackbackground
    • Oh, entonces funciona. Pero usted quiere que su barra de estado del fondo para ser de otro color? Otro UIWindow tendrá que ser creado para el fondo. Voy a actualizar mi respuesta para eso.
    • ¿La solución he añadido el trabajo?
    • Gracias por su valiosa respuesta, Enfermo de actualización una vez estoy en mi mac, de nuevo el lunes. Muchas gracias…
    • Alguna idea sobre cómo podemos evitar que la barra de navegación se expande por 20 píxeles? Esta solución es buena para mí, pero mi barra de navegación es de 20 píxeles demasiado alto.
    • Su sencilla solución que funciona para mí, excepto cuando se me presente una modal de controlador de vista. Una vez que el modal de controlador de vista es despedido, el resto de la vista ahora está debajo de la barra de estado. He reproducido este en un nuevo proyecto de ejemplo para asegurarse de que no hay nada más funky pasando. Estoy pensando que tal vez su más avanzada solución podría ser útil aquí, pero no estoy seguro de lo que la notificación entran en juego. Alguna idea?
    • ¿Te refieres a la presentación de la modal controlador de vista por encima de otro punto de vista del controlador de puntos de vista (como [[[[UIApplication sharedApplication] delegate] window] insertSubview:modalVC.view aboveSubview:anotherVC.view];?) Puedes dar más detalles sobre cómo y dónde presentar el modal de controlador de vista y cómo se descartarla? Si tienes window.clipsToBounds =YES; en el AppDelegate, entonces no hay nada en esa ventana debe estar debajo de la barra de estado, a menos que tengas los puntos de vista en la otra ventana que ha creado usted mismo. A continuación, sólo tiene a desplazar y cambiar el tamaño de la ventana.
    • ¿cómo tienes la solución cuando no se utiliza el Autodiseño. Incluso mi proyecto fue desarrollado con Xcode4.2 casi 2 años atrás. ¿Cómo se soluciona este problema ?
    • Estoy usando presentViewController:animación:finalización: y dismissViewControllerAnimated:finalización:. He publicado un proyecto de ejemplo aquí: bit.ly/1eUKHA1
    • Si lo hago, en iOS 7 mi punto de vista tienen un tamaño como UIScreen límites de tamaño y desplazamiento de 20 píxeles. Mi punto de vista tiene todos los autoresizing bits, así que no puedo ver la parte inferior de 20 píxeles. ¿Alguien sabe normal soluciones sin ningún tipo de hacks? Puedo probar en el simulador, no real del dispositivo.
    • El problema que estoy teniendo ahora es que cuando se inicia la aplicación, la orientación es 0.
    • Alguien ha sido capaz de conseguir que esta solución no funciona cuando se utiliza un modal de controlador de vista? He construido una aplicación de ejemplo para comprobar el problema (bit.ly/1eUKHA1). No he sido capaz de impedir la vista de desplazamiento en la barra de estado una vez que el modal punto de vista ha sido presentada despedidos.
    • Esto no está funcionando. Añade la barra de estado negra sin ningún tipo de información en it & también la parte inferior de la vista es de corte por 20 puntos.
    • No te preocupes. Ya he visto y corregido este error mediante la adición de self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height); justo después de self.window.frame = ... en la instrucción if.
    • Hizo la adición de self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height); después de self.window.frame = ... en la declaración de si el trabajo para usted?
    • href=»https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/orientation» >developer.apple.com/library/ios/documentation/uikit/reference/…
    • El uso de este como stackoverflow.com/a/19025547/1545180 para solucionar este problema.
    • La vista se restablece después de despedir a un modal de controlador de vista. 🙁
    • Por desgracia esto no es fiable en el iPad también. 🙁
    • Yo era capaz de hacer este trabajo chicos! Además de cambiar el marco y límites de la ventana, yo también altera el marco de la raíz de controlador de vista. La puse en el AppDelegate y en el viewDidAppear de mi controlador. 😀
    • No funciona con el cambio de orientación.. ¿hay algún cambio en el código ?
    • This no de trabajo, al ocultar Navigationbar ¿Qué hacer?
    • Puede usted proporcionarme el código de ejemplo de qué estás hablando? en [email protected] por favor… yo soy el problema que enfrentan después de usar ImagePicker…
    • cuando yo uso self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height); todavía mi top es llegar cortada… cuando yo uso self.window.bounds = CGRectMake(0, 0, self.window.frame.size.width, self.window.frame.size.height); funciona (0 en lugar de 20 en la posición y).. **, pero sólo 10px parte superior se cortan). alguna idea de por qué?
    • No su trabajo. si no estoy usando el controlador de navegación.
    • Naugher Tienes alguna solución para la barra de Estado se rompe?
    • La rotación en el iPad y, ocasionalmente, en el iPhone se et jodido si va en un par de capas de profundidad en el nav controlador de rotación y, a continuación, pulse back. El contenido termina debajo de la barra de navegación. Casi como si la trama no está configurada correctamente. Hay alguna forma de solucionar esto?
    • No funciona para mí a menos que yo lo establecido _background.windowLevel = UIWindowLevelStatusBar - 1;
    • Sabes que una API chupa cuando vea un nombre como UIApplicationDidChangeStatusBarOrientationNotification
    • No utilice 20 para la determinación de la altura de la barra de estado. Uso [[UIApplication sharedApplication] statusBarFrame].size.height. Ciertos escenarios puede aumentar el tamaño de la barra de estado, como cuando en una llamada de teléfono.

  3. 41

    ACTUALIZACIÓN(NUEVA SOLUCIÓN)

    Esta actualización es la mejor solución de iOS 7 barra de navegación problema.Usted puede configurar la barra de navegación de color ejemplo: FakeNavBar.backgroundColor = [UIColor redColor];

    Nota : Si utiliza la Navegación por defecto del Controlador por favor, utilice el viejo solución.

    AppDelegate.m

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
        if(NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_7_0)
        {
            UIView *FakeNavBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
            FakeNavBar.backgroundColor = [UIColor whiteColor];
    
            float navBarHeight = 20.0;
            for (UIView *subView in self.window.subviews) {
    
                if ([subView isKindOfClass:[UIScrollView class]]) {
                    subView.frame = CGRectMake(subView.frame.origin.x, subView.frame.origin.y + navBarHeight, subView.frame.size.width, subView.frame.size.height - navBarHeight);
                } else {
                    subView.frame = CGRectMake(subView.frame.origin.x, subView.frame.origin.y + navBarHeight, subView.frame.size.width, subView.frame.size.height);
                }
            }
            [self.window addSubview:FakeNavBar];
        }
    
        return YES;
    
    }
    

    VIEJA SOLUCIÓN – SI usted usa el código anterior por favor ignorar siguiente Código y la Imagen

    Esta es la versión antigua de iOS 7 barra de navegación de la solución.

    he resuelto el problema con el código siguiente. Esto es para agregar una barra de estado.
    didFinishLaunchingWithOptions

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        UIView *addStatusBar = [[UIView alloc] init];
        addStatusBar.frame = CGRectMake(0, 0, 320, 20);
        addStatusBar.backgroundColor = [UIColor colorWithRed:0.973 green:0.973 blue:0.973 alpha:1]; //change this to match your navigation bar
        [self.window.rootViewController.view addSubview:addStatusBar];
    }
    

    Y para Interface Builder esto es para cuando abra con iOS 6; es a partir de 0 píxeles.


    Nota: iOS 6/7 Deltas sólo aparecen si se desmarca la casilla «Usar el diseño Automático» para el Controlador de Vista en el «Inspector de Archivo» (a la izquierda del icono) en el panel de detalles.

    iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?

    • Hizo que mi día.Toma +1 por la ayuda!
    • Por favor nota: iOS 6/7 Deltas sólo aparecen si se desmarca la casilla «Usar el diseño Automático» para el Controlador de Vista en el «Inspector de Archivo» (a la izquierda del icono) en el panel de detalles.
    • ¿Qué pasa si mi guión se utiliza el diseño automático característica y todavía requiere para proporcionar el delta? Cómo apoyar estos dos?
    • creo Que se debe seleccionar la vista en el guión gráfico y ver esta propiedad
    • Muchas gracias! Usted me salvó un montón de problemas!
    • Quien dijo iOS 6 estado del estilo de diseño de la barra no puede ser mantenida, Usted puede hacer esto por @TacettinÖzbölük manera… gracias compañero por este awsum solución.
    • Tengo para delta Y a 20 en lugar de -20 a hacer que funcione (Ver como iOS 6.1 o posterior, a partir de Y=0). Y la creación de este directamente a la vista del controlador de vista no tiene ningún efecto. Usted tiene que cambiar cada uno de sus subvistas (otro punto de vista en el interior).
    • interesante! también, sólo para señalar apple prefieren esta ahora: si (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_6_1) {}

  4. 26

    SOLUCIÓN :

    Establece en su viewcontroller o en rootviewcontroller por reemplazar el método :

    -(BOOL) prefersStatusBarHidden
        {
            return YES;
        }
    
    • Esta es la única solución que trabajó para mí. GRACIAS!
    • No es una mala solución. Eliminar completamente el bar. No puede ser ideal para UX todo el tiempo, pero viable.
    • Solución perfecta, funciona muy bien!
    • Simple y agradable!
    • Simplemente Impresionante. Trabajó para mí a la Perfección.
    • Escenario: una Vez que puedo volver a mi UIVIew después de reproducir el vídeo a pantalla completa, una barra de color negro que aparece en la parte inferior que es solo el tamaño de la barra de estado,aunque, yo ya estaba usando una barra de estado. He quitado la barra de estado por completo y ahora se corrige el problema.
    • medio de la barra de estado en la parte superior (20px) le oculta… ¿verdad?
    • Sólo he sido exitoso en el uso de este método

  5. 17

    Aquí otro enfoque para los proyectos que hacen uso extensivo de las Storyboard:

    OBJETIVO:

    Objetivo de este enfoque es el de recrear la misma barra de estado estilo de iOS7 como lo hubo en iOS6 (véase la pregunta del título «de iOS 7 la Barra de Estado de Regresar a iOS 6 estilo?»).

    RESUMEN:

    Para lograr esto usamos el Guión tanto como sea posible por el cambio de elementos de interfaz de usuario, que se superponen por la barra de estado (en virtud de iOS 7) hacia abajo, mientras que el uso de los deltas para revertir la baja de cambio de diseño para iOS 6.1 o anterior. El resultado de espacio extra en iOS 7 es ocupada por una UIView con el fondo conjunto para el color de nuestra elección. El último puede ser creado en el código o usando el Guión gráfico (ver ALTERNATIVAS a continuación)

    SUPUESTOS:

    Para obtener el resultado deseado cuando los pasos siguientes, se supone que View controller-based status bar appearance se establece en NO, y que su Status bar style está establecido a «Transparente negro estilo (alfa de 0.5)» o «negro Opaco estilo». Ambas opciones se pueden encontrar/o añadida en virtud de la «Info» en la configuración del proyecto.

    PASOS:

    • Agregar una subvista a la UIWindow para servir como su barra de estado de fondo. Para lograr esto, se añade lo siguiente a su AppDelegate del application: didFinishLaunchingWithOptions: después de makeKeyAndVisible

      if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
          UIView *statusBarBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, yourAppsUIWindow.frame.size.width, 20)];
          statusBarBackgroundView.backgroundColor = [UIColor blackColor];
          [yourAppsUIWindow addSubview:statusBarBackgroundView];
      }
      
    • Desde que se agregan mediante programación a un fondo para iOS 7 SÓLO, usted tendrá que ajustar el diseño de la interfaz de usuario elementos que se superponen mediante la barra de estado en consecuencia, mientras que la preservación de su diseño para iOS6. Para lograr esto, haga lo siguiente:

      • Asegurar que Use Autolayout está desactivada para su Guión gráfico (esto es porque de lo contrario «iOS 6/7 Deltas» no se muestra en el Tamaño del Inspector). Para hacer esto:
        • seleccione el archivo de Guión gráfico
        • mostrar Utilidades
        • seleccione «Mostrar el Inspector de Archivo»
        • En «Generador de Interfaz de Documento» y desmarca la casilla «Usar Autodiseño»
      • Opcionalmente, para ayudarle a supervisar los cambios en el diseño para iOS 7 Y 6 como en su aplicación, seleccione la opción «Asistente de Editor», seleccione «vista previa» y «iOS 6.1 o anterior»:
        iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?
        iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?
      • Ahora seleccione el elemento de interfaz de usuario que desea ajustar para que no se solape con la barra de estado ya
      • Seleccione «Mostrar el Tamaño Inspector» en las Utilidades de la columna
      • Cambiar la posición de su elemento de interfaz de usuario a lo largo del eje Y en la misma cantidad que la barra de estado bg altura:
        iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?
      • Y cambiar el iOS6/7 Deltas valor para Y por el mismo importe NEGATIVO como la barra de estado bg altura (Nota el cambio en el iOS 6 de vista previa si la vas a usar):
        iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?

    ALTERNATIVAS:

    Para añadir aún menos código en storyboard-pesado proyectos y tener la barra de estado de fondo de rotación automática, en lugar de mediante programación la adición de un fondo para la barra de estado, se puede añadir un color ver a cada controlador de vista de que se encuentra en la parte superior de dicho viewcontroller de la vista principal. A continuación, cambiar la altura del delta de este nuevo punto de vista a la misma cantidad negativa como de la vista de la altura (para hacerlo desaparecer bajo iOS 6).

    La desventaja de esta alternativa (aunque tal vez insignificante teniendo en cuenta la rotación automática de la compatibilidad) es el hecho de que este punto de vista no es visible inmediatamente si usted está viendo el Storyboard para iOS 6. Sólo se sabe que está allí si usted tenía una mirada en el Documento «Esquema» en el Storyboard.

  6. 12

    Si usted no desea que su vista a los controladores de ser superpuesta en la barra de estado (y barras de navegación), desactive la casilla «Extender los Bordes en la parte Superior Bares» en Interface Builder en Xcode 5.

    iOS 7 barra de estado de regresar a iOS 6 el estilo por defecto en la aplicación para iPhone?

    • Esto sólo es posible si se utiliza un guión gráfico
    • no funciona incluso en el guión gráfico con Xcode 5 GM
    • Funciona sólo con los contenedores de vcs tales como la navegación controlador o controlador de tabbar
    • cualquier idea sobre cómo hacer que funcione en formato tableview controlador?
    • edgesForExtendedLayout sólo es utilizado por contenedor de vista de los controladores (como UINavigationController) para determinar si se trata de las opiniones de los niños deben ser superpuestas por el padre chrome. Al establecer esta propiedad en la raíz de controlador de vista de la UIWindow no hace nada. Ver mi respuesta anterior: stackoverflow.com/questions/18294872/…
    • ¿Cómo lo haces para un UITabBarController @Andrea? Gracias.
    • Depende si haces programación o con los storyboards. Mediante programación sólo se necesita para establecer el edgesForExtent de la propiedad a lo que te gusta en el controlador de vista que se muestra dentro de la UITabBarViewController, pero no tienen el problema de la barra de estado debe cargar un uinavigationcontroller dentro de la th UITabbarController. Marque aquí. developer.apple.com/library/ios/documentation/UserExperience/…
    • Hola @Andrea, así que no funcionará si sólo tengo una UITabBarController y no un UINavigationController?
    • Depende de lo que usted quiere lograr. Si tu problema es la barra de estado, pero sus opiniones son dentro de sólo un tabbarcontroller, esta no es la solución correcta. edgesForExtent sólo funciona en contenedor estándar de visualización de controladores y acaba de decir que si el controlador de vista puede permanecer en la pestaña de la barra o de la barra de navegación. Desde la barra de navegación en iOS7 son una especie de extensiones de la barra de estado, si se evita la navbar a evitar la barra de estado.
    • Funciona, pero el color de la barra de pestañas y la barra de pestañas se vuelve más oscuro de lo normal blanco. Sucedió esto a ustedes?
    • La barra de pestañas de color se vuelve más oscuro debido a que está parcialmente translúcido y esta opción mueve el punto de vista de debajo de la barra de pestañas.

  7. 11

    Apple lanzó Técnica de la P&UN QA1797: Prevención de la Barra de Estado, Cubriendo Sus puntos de vista. Funciona muy bien para el iOS 6 y iOS 7 versiones.

    • Apple está suponiendo todo el mundo es el uso de auto-presentación. Auto-diseño fue horrible en Xcode 4, y Xcode 5 fue sólo acaba de publicar, así que esta es una dudosa suposición.
    • Pero en perspectiva, esta es una mejor solución, a continuación, cambiar el tamaño del marco de la ventana raíz o la barra de estado.
    • Como lo que yo puedo decir, Apple solución no funciona si su rootViewController es un splitViewController.
  8. 8

    He visto muchas, muchas, muchas, muchas y muchos tutoriales para solucionar este maldito problema. Pero ninguno de ellos funciona! Aquí está mi solución, y funciona para mí:

    if( [[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f ) {
        float statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
        for( UIView *v in [self.view subviews] ) {
            CGRect rect = v.frame;
            rect.origin.y += statusBarHeight;
            v.frame = rect;
        }
    }
    

    La lógica es simple. Yo cambio todos los niños puntos de vista sobre el mismo.vista con 20 píxeles.
    Eso es todo. Luego, la captura de pantalla de la pantalla al igual que iOS 6 lo hicieron. Odio el iOS7 barra de estado! ~»~

    • donde debo agregar esto? en aplicación delegado hizo el lanzamiento con opciones?
    • Cuando hago esto, mi barra de estado se ilumina en blanco
  9. 6

    Una pequeña alternativa a Archy Holt respuesta, un poco más simple:

    una. Conjunto de UIViewControllerBasedStatusBarAppearance a NO en info.plist

    b. En AppDelegate‘s application:didFinishLaunchingWithOptions:, llame al:

    if ([[UIDevice currentDevice].systemVersion floatValue] < 7)
    {
        self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    }
    else
    {
        //handling statusBar (iOS7)
        application.statusBarStyle = UIStatusBarStyleLightContent;
        self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
        self.window.clipsToBounds = YES;
    
        //handling screen rotations for statusBar (iOS7)
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidChangeStatusBarOrientationNotification:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
    }
    

    Y agregar el método:

    - (void)applicationDidChangeStatusBarOrientationNotification:(NSNotification *)notification
    {
        //handling statusBar (iOS7)
        self.window.frame = [UIScreen mainScreen].applicationFrame;
    }
    

    También se puede considerar la creación de subclases UIWindow para manejar UIApplicationDidChangeStatusBarOrientationNotification sí mismo.

  10. 5

    He utilizado esto en mi punto de vista de los controladores, es muy sencillo.
    Añadir estas líneas en todas sus viewDidLoad métodos:

    - (void)viewDidLoad{
        //add this 2 lines:
        if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
            self.edgesForExtendedLayout = UIRectEdgeNone;
    
        [super viewDidLoad];
    }
    
    • Trabajó como un encanto, y los muertos fácil. En ruby movimiento, antes de la llamada a super uso: auto.edgesForExtendedLayout = UIRectEdgeNone si respondsToSelector(«edgesForExtendedLayout»)
  11. 4

    Pruebe este sencillo método….

    Paso 1:Para cambiar en solo viewController

    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque];
    

    Paso 2: Para cambiar en toda la aplicación

    info.plist
          ----> Status Bar Style
                      --->UIStatusBarStyle to UIStatusBarStyleBlackOpaque
    

    Paso 3: agregar También esta en cada viewWillAppear para ajustar statusbar altura para iOS7

        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 7) {
            CGRect frame = [UIScreen mainScreen].bounds;
            frame.origin.y+=20.0;
            frame.size.height-= 20.0;
            self.view.frame = frame;
            [self.view layoutIfNeeded];
        }
    
    • esto es simple de entender…gracias @svmrajesh
  12. 3

    Que he alcanzado la barra de estado como el de iOS 6 en iOS 7.

    Conjunto UIViewControllerBasedStatusBarAppearance a NO en información.plist

    Pase este código en - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions método

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        [application setStatusBarStyle:UIStatusBarStyleLightContent];
        self.window.clipsToBounds =YES;
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height);
    
        //Added on 19th Sep 2013
        NSLog(@"%f",self.window.frame.size.height);
        self.window.bounds = CGRectMake(0,0, self.window.frame.size.width, self.window.frame.size.height);
    }
    

    Puede empujar hacia abajo todos sus puntos de vista por 20 píxeles.A más de venir que utilizar el siguiente código en -(void)viewDidAppear:(BOOL)animated método

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        CGRect frame=self.view.frame;
        if (frame.size.height==[[NSUserDefaults standardUserDefaults] floatForKey:@"windowHeight"])
        {
            frame.size.height-=20;
        }
        self.view.frame=frame;
    }
    

    Tiene que establecer windowHeight Userdefaults valor después de la ventana de asignación en didFinishLauncing Método como

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [[NSUserDefaults standardUserDefaults] setFloat:self.window.frame.size.height forKey:@"windowHeight"];
    
    • Un mejor enfoque es hacer que su UINavigationBar del height igual a 64 en lugar de 44. A continuación, la barra se extiende todo el camino hasta la parte superior como en la de Apple apps.
    • Pero mi necesidad era mostrar iOS 6 estilo de la barra de estado.
    • Puede usted por favor agregar la solución para la Orientación horizontal de iOS 7?. Yo estoy haciendo la misma cosa. pero no funciona en iOS 7 Paisaje.
    • THX! Esto funciona para mí, pero se corta la uitabbar en la parte inferior. Tengo una tab bar controller app con 3 vistas, 2 de los cuales son tableviewcontrollers.
    • Ya lo he dicho en mi respuesta que se puede empujar hacia abajo de su punto de vista.Por favor usar ese código para hacer que se vea normal.
    • Hice uso de el código, en la que todavía está cortado. He añadido el appDelegate código que comienza el marco de la ventana a 20 y restablece la ventana.los límites para nada mayor o igual a 7, y utiliza el valor predeterminado de usuario. Entonces si >=7 código de la viewWillAppear he añadido otro código. Aparece la barra de estado fino en la parte superior, pero la barra de pestañas de la tabbarcontroller todavía está cortado
    • HASTA que gire el dispositivo (mi iOS 7 el dispositivo es un iPad), esto soluciona perfectamente. Pero una vez que me gire, la barra de color negro sigue siendo exactamente donde está y el «punto de vista» (lo siento si ese es el mal término técnico, soy un PhoneGap/tipo web) mantiene su reducida altura, excepto que ya no es el de la altura, la anchura. Esta solución no admite la rotación, pero es la mejor solución que he visto – ¿cómo puede ser mejorado para reloj para dispositivo rotaciones? Gracias!
    • Esta respuesta aparentemente funciona muy bien para muchos pero para otros, especialmente aquellos con PhoneGap, la solución parece estar utilizando el código de esta respuesta: stackoverflow.com/a/19188984/706751

  13. 2

    Si usted está utilizando el Interface builder, intente esto:

    En su archivo xib:

    1) Seleccione la vista principal, el color de fondo a negro (o cualquier color que usted desea que la barra de estado para ser

    2) asegúrese de que el fondo es un autónomo subvista posicionado como una de las mejores secundarias de nivel de la del controlador de la vista.

    Mover el fondo para convertirse en un directo niño de la del controlador de vista. Compruebe la autosizing panel para estar seguro de que usted ha bloqueado todos los bordes del marco, se activan tanto la flexibilidad de los ejes, y si este es un UIImageView, establezca el modo de contenido de la Escala de llenar. Mediante programación, esto se traduce en contentMode conjunto para UIViewContentModeScaleToFill y tiene su ajuste de tamaño automático de la máscara de conjunto a (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight).

    3) Ahora mover todo lo que está bloqueado a la parte de arriba – abajo por 20 pts y establecer un iOS 6/7 delta Y a -20.

    Todos los de nivel superior de los niños que están encerrados en el marco superior de la autosizing panel de la necesidad de ser trasladado por 20pts y tienen su iOS 6/7 delta Y establecer a -20. (Cmd seleccionar todos aquellos, y haga clic en flecha abajo 20 veces – existe una mejor manera de que nadie?)

    4) Ajustar el iOS 6/7 delta altura de todos los elementos anteriores que tenían una altura flexible.
    Cualquiera de los elementos que fueron bloqueados en el marco superior e inferior y había flexible de la altura habilitado en el autosizing panel, también debe tener iOS 6/7 delta altura de 20. Que incluye los antecedentes de la vista se mencionó anteriormente. Esto puede parecer contra-intuitivo, pero debido a que el orden en que estas se aplican, es necesario. La altura del bastidor se establece primero (basado en el dispositivo), entonces los deltas son aplicados, y, finalmente, la autosizing máscaras se aplican basa en el desplazamiento de las posiciones de todos los marcos secundarios – piensa un poco, tiene sentido.

    5) Finalmente, los elementos que fueron bloqueados en la parte inferior del marco, pero no el cuadro de arriba no necesitan de deltas en todo.

    Que le dará la idénticos barra de estado en iOS7 y iOS6.

    Por otro lado, si usted quiere iOS7 estilo, mientras que el mantenimiento iOS6 compatibilidad, a continuación, establezca el delta Y /delta valores de altura a 0 para el fondo de la vista.

    Ver más iOS7 migración info leer el post completo: http://uncompiled.blogspot.com/2013/09/legacy-compatible-offsets-in-ios7.html

    • No deltas cuando se utiliza la función de diseño
  14. 2

    Mi solución fue añadir un UIView con altura de 20 puntos en la parte superior de la ventana cuando en iOS 7.
    A continuación, he creado un método en mi clase AppDelegate para mostrar/ocultar el «sólido» de la barra de estado de fondo. En application:didFinishLaunchingWithOptions::

    //...
    
    //Add a status bar background
    self.statusBarBackground = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.bounds.size.width, 20.0f)];
    self.statusBarBackground.backgroundColor = [UIColor blackColor];
    self.statusBarBackground.alpha = 0.0;
    self.statusBarBackground.userInteractionEnabled = NO;
    self.statusBarBackground.layer.zPosition = 999; //Position its layer over all other views
    [self.window addSubview:self.statusBarBackground];
    
    //...
    return YES;
    

    A continuación, he creado un método para fade in/out de la barra de estado negra de fondo:

    - (void) showSolidStatusBar:(BOOL) solidStatusBar
    {
        [UIView animateWithDuration:0.3f animations:^{
            if(solidStatusBar)
            {
                [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
                self.statusBarBackground.alpha = 1.0f;
            }
            else
            {
                [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
                self.statusBarBackground.alpha = 0.0f;
            }
        }];
    }
    

    Todo lo que tengo que hacer ahora es llamada [appDelegate showSolidStatusBar:YES] cuando sea necesario.

  15. 2

    Esto puede ser abrumador problema si usted utiliza el diseño Automático porque no se puede manipular directamente los marcos más. Hay una solución simple, sin demasiado trabajo.

    Terminé de escribir un método de utilidad en una Clase de Utilidad y la llamada de todos a la vista de los controladores de la viewDidLayoutSubviews Método.

    + (void)addStatusBarIfiOS7:(UIViewController *)vc
        {
            if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
                CGRect viewFrame = vc.view.frame;
                if(viewFrame.origin.y == 20) {
                    //If the view's y origin is already 20 then don't move it down.
                    return;
                }
                viewFrame.origin.y+=20.0;
                viewFrame.size.height-= 20.0;
                vc.view.frame = viewFrame;
                [vc.view layoutIfNeeded];
            }
        }
    

    Anular su viewDidLayoutSubviews método en el controlador de vista, donde desea que la barra de estado. Se obtendrá a través de la carga de diseño Automático.

    - (void)viewDidLayoutSubviews
    {
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
        [super viewDidLayoutSubviews];
        [MyUtilityClass addStatusBarIfiOS7:self];
    }
    
  16. 1

    La manera más fácil de hacerlo es instalando un mayor SDK para su nuevo Xcode.

    Cómo instalar mayores SDK para el nuevo Xcode?

    1. U puede conseguir el SDK de iOS 6.1 de http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html o de la descarga de los mayores Xcode y consiguiendo que el SDK de sus contenidos

    2. Descomprimir y pegar esta carpeta /Aplicaciones/Xcode.app/Contents/Desarrollador/Plataformas/iPhoneOS.plataforma/Desarrollador/SDKs

    3. Reiniciar el xcode.

    4. U ahora se puede seleccionar un viejo SDK en su configuración de generación del proyecto

    Espero que sea de ayuda para usted. Funcionó para mí =)

    • trabajó para mí. gracias @marcelosalloum pero seguir buscando una solución para mi phonegap (uiwebview) app para iOS7 transparente la barra de estado para la futura actualización de la aplicación. gracias de nuevo. 😉
    • está usted seguro de que la aplicación va a ser aceptado por Apple? Dijeron que las aplicaciones compiladas con XCode 4 ya no sería aceptado…que como cuestión de hecho, significa iOS 6 SDK.
    • Mi aplicación se aceptó porque Xcode5 puede compilar mayores iOS Sdk. No estoy seguro de si la AppStore de rechazará Xcode4 construido aplicaciones, pero (Xcode4 != iOS 6 SDK) como usted ha dicho.
    • Fue que a partir del 1 de febrero? El día en que Apple hizo obligatoria.
    • No, tocado por último a que el código que el año pasado, el folk. No sabía que Apple había hecho obligatoria (no se contenta al saber que a pesar de que). Por favor, ¿puedes publicar aquí el enlace que dice eso? Saludos
  17. 1

    Como el uso de presentViewController:animated:completion: mal el window.rootViewController.view, tenía que encontrar un enfoque diferente a este problema. Finalmente llegué a trabajar con los modales y las rotaciones por subclases de la UIView de mi rootViewController.

    .h

    @interface RootView : UIView
    
    @end
    

    .m

    @implementation RootView
    
    -(void)setFrame:(CGRect)frame
    {
        if (self.superview && self.superview != self.window)
        {
            frame = self.superview.bounds;
            frame.origin.y += 20.f;
            frame.size.height -= 20.f;
        }
        else
        {
            frame = [UIScreen mainScreen].applicationFrame;
        }
    
        [super setFrame:frame];
    }
    
    - (void)layoutSubviews
    {
        self.frame = self.frame;
    
        [super layoutSubviews];
    }
    
    @end
    

    Ahora tiene una fuerte solución para iOS7 animaciones.

  18. 1

    Estoy tarde para esta Respuesta, pero solo quiero compartir lo que yo hice, que es básicamente
    la solución más fácil

    Primera de todas-> Ir a su info.plist Archivo y agregar de la Barra de Estado Estilo->Transparente Negro Estilo(Alfa de 0.5)

    Ahora ,aquí Va:-

    Añadir este código en el AppDelegate.m

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
         //Whatever your code goes here
      if(kDeviceiPad){
    
         //adding status bar for IOS7 ipad
             if (IS_IOS7) {
                  UIView *addStatusBar = [[UIView alloc] init];
                  addStatusBar.frame = CGRectMake(0, 0, 1024, 20);
                  addStatusBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; //change this to match your navigation bar
                  [self.window.rootViewController.view addSubview:addStatusBar];
                        }
                    }
        else{
    
             //adding status bar for IOS7 iphone
            if (IS_IOS7) {
                UIView *addStatusBar = [[UIView alloc] init];
                addStatusBar.frame = CGRectMake(0, 0, 320, 20);
                addStatusBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; //You can give your own color pattern
                [self.window.rootViewController.view addSubview:addStatusBar];
            }
    
        return YES;
       }
    
  19. 0

    Mi solución muy simple (suponiendo que sólo tienen orientación vertical soportado) es redefinir la ventana de la aplicación de los límites para las versiones de iOS por debajo de 7, en Aplicación delegado método didFinishLaunchingWithOptions:

    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if ([HMService getIOSVersion] < 7) {
        //handling statusBar (iOS6) by leaving top 20px for statusbar.
        screenBounds.origin.y = 20;
        self.window = [[UIWindow alloc] initWithFrame:screenBounds];
    }
    else {
        self.window = [[UIWindow alloc] initWithFrame:screenBounds];
    }
    
    • El código sólo se cambia la ‘y’ de 0 a 20, pero no ajustar la altura en consecuencia así que usted debe añadir screenBounds.tamaño.altura= 20; sólo después de screenBounds.origen.y = 20;
  20. 0

    Puede ocultar la barra de estado todos juntos. Por lo que su aplicación será a pantalla completa. Creo que es el mejor que usted conseguirá.

    UIStatusBarStyleNone o establecer en la configuración del destino.

    • donde se especifique UIStatusbarstylenone
  21. 0

    Pasos Para Ocultar la barra de estado de iOS 7:

    1.Vaya a su solicitud de información.plist archivo.

    2.Y Establecer, a la Vista basada en el controlador de la barra de estado apariencia : Boolean NO

    Esperanza he resuelto la barra de estado de la cuestión…..

  22. 0

    A fin de continuar trabajando con setStatusBarHidden: yo uso esta categoría:

    @interface UIApplication (StatusBar)
    
    -(void)setIOS7StatusBarHidden:(BOOL)statusBarHidden;
    
    @end
    
    @implementation UIApplication (StatusBar)
    
    -(void)setIOS7StatusBarHidden:(BOOL)statusBarHidden{
        if (!IOS7) {
            [self setStatusBarHidden:statusBarHidden];
            return;
         }
    
        if ([self isStatusBarHidden] == statusBarHidden) {
            return;
        }
    
        [self setStatusBarHidden:statusBarHidden];
        [self keyWindow].clipsToBounds = YES;
        CGFloat offset = statusBarHidden ? 0 : 20;
        [self keyWindow].frame =  CGRectMake(0,offset,[self keyWindow].frame.size.width,[self keyWindow].frame.size.height-offset);
        [self keyWindow].bounds = CGRectMake(0, offset, [self keyWindow].frame.size.width,[self keyWindow].frame.size.height);
    }
    
    @end
    
  23. 0

    Esto podría ser demasiado tarde para compartir, pero tengo algo que aportar, que podría ayudar a alguien, yo estaba tratando de sub-clase de la UINavigationBar y quería hacer que se vea como ios 6 con el negro de la barra de estado y barra de estado de texto en blanco.

    Aquí es lo que he encontrado de trabajo para que

            self.navigationController?.navigationBar.clipsToBounds = true
            self.navigationController?.navigationBar.translucent = false
            self.navigationController?.navigationBar.barStyle = .Black
            self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
    

    Que hizo que mi barra de estado de fondo negro, texto de barra de estado en blanco y la barra de navegación de color blanco.

    iOS 9.3, XCode 7.3.1

Dejar respuesta

Please enter your comment!
Please enter your name here