Tengo una ViewController
que está dentro de una UINavigationcontroller
, pero la barra de navegación está oculta. Cuando ejecuto la aplicación en iOS 7, la barra de estado se muestra en la parte superior de mi vista. Hay alguna manera de evitar esto?
No quiero escribir ningún código específico del sistema operativo.
Intenté fijar View controller-based status bar appearance
a NO
, pero no solucionar el problema.
Respuestas:
Xcode 5 tiene
iOS 6/7 Deltas
que está diseñado específicamente para resolver este problema. En el guión gráfico, moví mis vistas 20 píxeles hacia abajo para que se vean bien en iOS 7 y para que sea compatible con iOS 6, cambiéDelta y
a -20.Dado que mi guión gráfico no utiliza el diseño automático, para cambiar el tamaño de la altura de las vistas correctamente en iOS 6 tuve que configurar
Delta height
tambiénDelta Y
.fuente
Si simplemente NO quiere ninguna barra de estado, necesita actualizar su plist con estos datos: Para hacer esto, en el plist, agregue esas 2 configuraciones:
En iOS 7, se espera que diseñe su aplicación con una barra de estado transparente superpuesta en mente. Vea la nueva aplicación meteorológica de iOS 7, por ejemplo.
fuente
Este es el comportamiento predeterminado para
UIViewController
iOS 7. La vista será de pantalla completa, lo que significa que la barra de estado cubrirá la parte superior de la vista.Si tiene un
UIViewController
dentro de aUINavigationController
y la barra de navegación es visible, puede tener el siguiente código en suviewDidLoad
o tener una imagen de fondo para que la barra de navegación haga el truco.Si tiene la barra de navegación oculta, entonces debe ajustar todos los elementos de UIView cambiando 20 puntos. No veo ninguna otra solución. Usar diseño automático ayudará un poco.
Aquí está el código de muestra para detectar la versión de iOS, si desea compatibilidad con versiones anteriores.
fuente
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
La única solución de trabajo que he hecho yo mismo.
Aquí está mi subclase UIViewController https://github.com/comonitos/ios7_overlaping
1 subclase de UIViewController
2 Subclase su window.rootViewController de esa clase.
3 ¡Voila!
4 Agregue esto para que su barra de estado sea blanca Justo después de [self.window makeKeyAndVisible]; !!!
fuente
Agregar clave en plist --- Ver la apariencia de la barra de estado basada en el controlador: NO
fuente
Para ocultar la barra de estado en ios7, siga estos sencillos pasos:
En Xcode, vaya a la
Resources
carpeta " " y abra "(app name)-Info.plist file
".View controller based status bar appearance
clave " " y establezca su valor "NO
"Status bar is initially hidden
clave " " y establezca su valor "YES
"Si las claves no están allí, puede agregarlas seleccionando "
information property list
" en la parte superior y haciendo clic en el icono +fuente
Si desea ocultarlo por completo y simplemente evitar lidiar con él, esto funciona bien.
referencia https://stackoverflow.com/a/18873777/1030449
fuente
Si usa
xib
s, una implementación muy fácil es encapsular todas las subvistas dentro de una vista de contenedor con indicadores de cambio de tamaño (que ya usará para compatibilidad de 3.5 "y 4") para que la jerarquía de vista se vea asíy luego
viewDidLoad
, haz algo como esto:De esta forma, no es necesario modificar las puntas para la compatibilidad con iOS 7. Si tiene un fondo, puede mantenerlo afuera
containerView
y dejar que cubra toda la pantalla.fuente
Esto es todo lo que se necesita para eliminar la barra de estado.
fuente
Para la barra de navegación:
Escribiendo este código:
me acaba de hacer el truco.
fuente
La respuesta de Vincent edgeForExtendedLayout funcionó para mí.
Estas macros ayudan a determinar la versión del sistema operativo, lo que facilita
agregue estas macros al archivo prefix.pch de su proyecto y se puede acceder a ellas desde cualquier lugar
fuente
He publicado mi respuesta a otra publicación con la misma pregunta con esta.
De la Guía de transición de Apple iOS7, https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/AppearanceCustomization.html#//apple_ref/doc/uid/TP40013174-CH15-SW1
Específicamente
automaticallyAdjustsScrollViewInsets=YES
yset self.edgesForExtendedLayout = UIRectEdgeNone
funciona para mí cuando no quiero que se superpongan y tengo un archivotableviewcontroller
.fuente
Si desea que se habilite "Usar diseño automático" a cualquier costo, coloque el siguiente código en viewdidload.
fuente
Mi barra de estado y mi barra de navegación se superponen después de regresar de la vista horizontal de YTPlayer. Aquí está mi solución después de probar la versión de @comonitos pero no funciona en mi iOS 8
Simplemente llame a esta función siempre que desee fijar la posición de la barra de navegación. Llamé a YTPlayerViewDelegate's
playerView:didChangeToState:
fuente