La barra de navegación aparece sobre las vistas con el nuevo SDK de iOS7
CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
En las versiones anteriores funciona correctamente. La barra de búsqueda aparece debajo destatusbar
y barra de navegación. lostableview
aparece debajo de la barra de búsqueda
Pero cuando ejecuto esto enXcode 5 sdk iOS 7
, la barra de búsqueda no está visible (creo que está ubicada debajo de la barra de estado y la barra de navegación), y también la barra de navegación aparece sobre la vista de tabla.
¿Será arreglado coniOS 7
lanzamiento estable?
¿O es el problema de mi codificación?
O deberíamos manejarlo agregando la y(y = statubar height + nav bar height)
valor poriOS 7
?
Recientemente descargué Xcode 5 DP para probar mis aplicaciones en iOS 7. Lo primero que noté y confirmé es que los límites de mi vista no siempre cambian de tamaño para tener en cuenta la barra de estado y la barra de navegación.
En viewDidLayoutSubviews, imprimo los límites de la vista:
{{0, 0}, {320, 568}}
Esto hace que mi contenido aparezca debajo de la barra de navegación y la barra de estado.
Sé que podría explicar la altura yo mismo al obtener la altura de la pantalla principal, restando la altura de la barra de estado y la altura de la barra de navegación, pero eso parece un trabajo adicional innecesario.
¿Alguien más ha tenido este problema?
ACTUALIZAR:
He encontrado una solución para este problema específico. Establezca la propiedad translúcida de la barra de navegación en NO:
self.navigationController.navigationBar.translucent = NO;
Esto evitará que la vista se enmarque debajo de la barra de navegación y la barra de estado.
Sin embargo, no he encontrado una solución para el caso cuando desea que la barra de navegación sea translúcida. Por ejemplo, al ver una foto a pantalla completa, deseo que la barra de navegación sea translúcida y la vista que se debe enmarcar debajo. Eso funciona, pero cuando alterno mostrar / ocultar la barra de navegación, he experimentado resultados aún más extraños. La primera subvista (aUIScrollView
) obtiene sus límites y su origen cambia cada vez.