6

En Mi aplicación,¿Ver cambios de marco en Ocultar/Mostrar la barra de navegación?

Tengo el Controlador de navegación con controlador de vista raíz.

Para mostrar/ocultar la barra de navegación que funciona bien.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    BOOL navbarhide=[self.navigationController.navigationBar isHidden]; 
    [self.navigationController setNavigationBarHidden:!navbarhide animated:YES]; 


} 

funciona bien, pero,

Cuando la barra de navegación se oculta a continuación, ver los cambios de marco.

Cuando la barra de navegación no está oculta, puede ver los cambios en el marco.

When navigation bar is not hidden ..see the press button and view's origin is below the bar, I dont want like this I want it to stick at navigation bar's origin[at the top of the page]

It is fine view is at its original position when bar is hidden. I want view to be stick at this position and turn bar hide/show without changing the view's frame.

Gracias por adelantado ...

Editar configuración conjunto self.view.frame No tiene ningún efecto.

Respuesta

10

que tienen el mismo problema. En mi proyecto, es porque la vista es vista de desplazamiento. Si su vista es una vista de desplazamiento o una vista de tabla, puede intentar esto:

Agrego el código siguiente al controlador.

self.automaticallyAdjustsScrollViewInsets = NO; 

Espero que te ayude.

0

Creo que esto es por funcionalidad por defecto que no puede ser cambiado por usted, pero cambia la posición del botón mediante siguiente código

myButton.frame = CGRectMake (X, Y, altura, anchura);

después de ocultar la barra de navegación.

+0

en realidad este es el código de prueba que quiero aplicar a mi aplicación ... lo que si puede conseguir .. –

+0

Cuando hace clic en el botón, cambia los valores de myButton. Cambia los valores y prueba esto. Creo que obtendrá su solución. –

+0

Sí, puedo mover el botón, pero en mi aplicación real tengo muchos componentes, así que es complicado mover los componentes. 1 –

0

Creo que esto puede ayudarle a

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
BOOL navbarhide=[self.navigationController.navigationBar isHidden]; 
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES]; 
if(navbarhide) 
self.view.frame=CGRectMake(0,0, 320, 480); 
else 
    self.view.frame=CGRectMake(0,44, 320, 480); 
} 
+0

Sin efectos ... el mismo comportamiento ... –

+0

esto no tiene efecto porque la navegación comienza a ocultarse después de establecer el marco. y elimina lo que hiciste – hasan83

0

cambio del self.view.frame cuando estás mostrar y ocultar las barras de navegación

3

No se puede cambiar el marco de self.view. No utilizo setNavigationBarHidden: para ocultar la barra de navegación, pero cambio directamente el marco de self.navigationController.navigationBar. De esta forma, self.view.frame no cambiará.

CGRect frame = (navBarhidden) ? CGRectMake(0, -24,self.view.bounds.size.width,44) :  CGRectMake(0, 20,self.view.bounds.size.width,44); 
self.navigationController.navigationBar.frame = frame; 
+0

pero eso deja un espacio negro en su antiguo lugar. – hasan83

+0

Intenté esto pero me dio demasiados errores secundarios – Jasper

2

Tuve este problema al mostrar UIView a pantalla completa. Cambiar el tamaño del marco funcionó para mí. (Swift)

ocultar navigationbar:

self.navigationController!.navigationBar.hidden = true 
    self.view.frame.origin.y -= 64 
    self.view.frame.size.height += 64.0 

mostrando navigationbar nuevo:

self.navigationController!.navigationBar.hidden = false 
    self.view.frame.origin.y += 64 
    self.view.frame.size.height -= 64.0 
Cuestiones relacionadas