simbolo - significado de iconos de iphone
La barra de estado aparece sobre los lĂmites de mi vista en iOS 7 (6)
No hay necesidad de construir multi-xib. Creo que su problema es el "20px": el mismo archivo XIB se ve muy bien en iOS 6, pero pierde 20 píxeles en iOS 7.
Por ejemplo, tiene una vista, y es Y = 0. En iOS 6, está al lado de la parte inferior de la barra de estado. En iOS 7, aparece sobre la barra de estado.
Debe usar Xcode 5 para abrir sus archivos XIB y habilitar el editor asistente. Sigue estos pasos:
Seleccione el inspector de archivos y cambie "Ver como" a "iOS 7 y posterior"
Seleccione el inspector de tamaño y complete deltaY con "-20"
¡Está hecho!
Esta pregunta ya tiene una respuesta aquí:
Intenté probar mi aplicación en iOS 7, y luego descubrí que mi vista aparece sobre la barra de estado ... Al leer, en iOS 7, la barra de estado está oculta. Entonces, ¿cómo lo hago compatible para ejecutar tanto en iOS 6 como en iOS 7? ¿Debería hacer diferentes archivos .xib para diferentes versiones de iOS para cada pantalla?
He estado leyendo esto: si ambas versiones de una aplicación estándar deben tener un diseño similar, use Diseño automático para crear una IU que funcione correctamente en ambas versiones de iOS. Para admitir versiones múltiples de iOS, especifique un solo conjunto de restricciones que Auto Layout puede usar para ajustar las vistas y los controles en el guión gráfico o en los archivos XIB (para obtener más información sobre las restricciones, consulte "Restricciones de las relaciones expresas entre vistas").
Si ambas versiones de una aplicación estándar deben tener un diseño similar, y no está utilizando Diseño automático, use desplazamientos. Para utilizar desplazamientos, primero actualice la interfaz de usuario para iOS 7. A continuación, especifique valores que definan el origen, la altura y el ancho de cada elemento en la interfaz de usuario anterior como desplazamientos desde la nueva posición del elemento en la interfaz de usuario de iOS 7.
Pero cuando uso el autolayout en .xib, muestra un error de que el autolayout está en una versión anterior de iOS 6.
¿Cómo soluciono este problema?
Probablemente necesite agregar el siguiente código en cada controlador de vista.
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
}
// Add this method
- (BOOL)prefersStatusBarHidden {
return YES;
}
Si desea mostrar una barra de estado en iOS 7 con Xcode 5, simplemente reorganice los botones y otras subvistas para dejar suficiente espacio alrededor de la barra de estado. Pero, solo espera! Me gusta apoyar iOS 6 también. ¿Cómo puedo hacer eso?
Encontré documentación de Apple y encontré el título "Apoyando dos versiones de una aplicación estándar" en el documento.
Si está editando un archivo XIB , selecciónelo y haga clic en el editor del asistente. Podrá encontrar el menú "manual, automático ..." por allí. Luego elige "vista previa".
Luego encontrarás un diseño de vista uno al lado del otro. Luego notará que hay un botón emergente en la parte inferior derecha del panel derecho (vista); dice "iOS 7 y más tarde". Puede elegir "iOS 6.1 y versiones anteriores". Woa! Ahora puede hacer ajustes para iOS 6.1 sin afectar el diseño de iOS 7.
Si estás trabajando en el guión gráfico, básicamente es lo mismo. Usted elige un objeto controlador de vista y hace clic en el modo asistente de editor, elige "vista previa", luego "iOS7 y posterior" ... Bluh Bluh Bluh.
No estoy seguro, pero solo el editor asistente es capaz de cambiar al modo iOS 7 + / iOS 6-. Acabo de encontrar esto muy recientemente, así que por favor señale, si hay malentendidos u otros trucos.
Tengo el mismo problema. Por ahora hice dos hacks y decidiré con qué iré:
- Puede ocultar la barra de estado completamente estableciendo
UIStatusBarHidden
yUIViewControllerBasedStatusBarAppearance
en verdadero. - En mi aplicación, creé una restricción Top Spacing con valor 0, y programáticamente cambio a 20 si detecto que la aplicación se está ejecutando en iOS 7.
¿Cómo hago una cuenta de Autolayout para el área de la barra de estado?
Bueno, lo descubrí.
En su BRSMyListSubViewController
( BRSMyListSubViewController
en mi caso), en viewDidLoad
, necesita establecer uno de estos dos
self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;
O
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = YES;
Curiosamente, en el controlador de vista raíz, estos valores se establecen en UIRectEdgeAll
defecto, NO
y YES
respectivamente, pero su tableView
NO se encuentra debajo de barra de navegación y pie de página.
No sé por qué es tan ilógico.
También es extraño que edgesForExtendedLayout
tenga que mezclarse con una de las otras dos propiedades, aunque es claramente responsable del comportamiento.
Una vez que necesita verificar su tamaño principal de UIView para iOS 7.0 y posterior e iOS 6.0 y versiones inferiores, probablemente obtendrá una idea.
Desde iOS 7, Apple ha cambiado el tamaño de vista principal = fijo. Esto significa que si agrega una barra de navegación, tabbar su tamaño de vista permanece igual [iPhone 4s: 320 * 480, iPhone 5: 320 * 568].
iOS 7 parece ser compatible con la barra de estado que se oculta para algunas vistas, pero no para otras. Para ocultarlo para todas las vistas, haga lo siguiente:
- Asegúrese de que
Hide during application launch
todavía esté marcado, para admitir versiones anteriores del sistema operativo. - En su archivo Info.plist, agregue la
View controller-based status bar appearance
configúrelo enNO
. - Es posible que necesites "Limpiar" antes de construir, (lo hice), pero luego tu aplicación debería funcionar como antes: ¡sin barra de estado sobre tus puntos de vista!