iphone como - La barra de navegación aparece sobre las vistas con el nuevo iOS7 SDK




5 Answers

Eso no es del todo cierto. Se ha presentado una nueva propiedad en iOS 7 que le permite ajustar el comportamiento de diseño como en versiones anteriores de iOS. Coloque este fragmento de código en su controlador de vista, ¡y debería estar listo para continuar! El espacio que ocupa su barra de navegación debe contabilizarse automáticamente

 if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;

Necesita agregar lo anterior en su método -(void)viewDidLoad .

Nota: Debería utilizar la última versión de GM de iOS 7 y Xcode 5 ahora que la API ha cambiado de las versiones beta.

del reloj
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 de la statusbar y la statusbar navegación. La vista de tableview aparece debajo de la barra de búsqueda

Pero cuando ejecuto esto en Xcode 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 aparece la barra de navegación sobre la vista de tabla.

¿Se solucionará con la versión estable iOS 7 ?

¿O es el problema de mi codificación?

¿O deberíamos manejarlo agregando el valor de y (y = statubar height + nav bar height) para iOS 7 ?

Hace poco 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 se ajustan a la cuenta para 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 obteniendo 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 extra innecesario.

¿Alguien más ha tenido este problema?

ACTUALIZAR:

Encontré 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 arreglará la vista al enmarcarse debajo de la barra de navegación y la barra de estado.

Sin embargo, no encontré una solución para el caso cuando desea que la barra de navegación sea translúcida. Por ejemplo, al ver una foto en pantalla completa, deseo que la barra de navegación sea translúcida y que la vista se enmarque debajo de ella. Eso funciona, pero cuando alterno mostrando u ocultando la barra de navegación, he experimentado resultados aún más extraños. La primera subvista (un UIScrollView ) obtiene sus límites y su origen cambia cada vez.




Como dice el OP, hay una solución simple para esto que consiste en establecer que la barra de navegación sea opaca. En lugar de hacer esto en el código, simplemente desmarque "Translúcido" para su barra de navegación raíz:




todas estas respuestas fueron útiles, especialmente MQoder, pero para mí también tuve que establecer la barra superior predeterminada en "navegación negra opaca".




self.edgesForExtendedLayout = UIRectEdgeNone;

Y debe hacer esto en la aplicación AppDelegate #: didFinishLaunchingWithOptions:

self.window.backgroundColor = [UIColor whiteColor];

De lo contrario, el color de fondo de la barra de navegación cambiará a gris. Porque la barra de navegación transparente se superpone a la ventana.




Una solución es usar el Controlador de navegación. Esto soluciona automáticamente el problema. También use Xcode 5 en lugar de versiones de Xcode Preview ya que son beta.




Related