color bar iphone ios uinavigationcontroller uinavigationbar

iphone - bar - navigation controller programmatically swift



Barra de navegaciĆ³n mostrar/ocultar (9)

Aquí hay una solución muy rápida y simple:

self.navigationController.hidesBarsOnTap = YES;

Esto funcionará con un solo toque en lugar de presionar dos veces. También cambiará el comportamiento del controlador de navegación incluso después de presionar o hacer estallar el controlador de vista actual.

Siempre puede modificar este comportamiento en su controlador dentro de las acciones viewWillAppear: y viewWillDisappear: si desea establecer el comportamiento solo para un único controlador de vista.

Aquí está la documentation :

Tengo una aplicación con una barra de navegación que consta de 2 botones de barra. Me gustaría ocultar y mostrar esta barra de navegación cuando un usuario toca dos veces la pantalla.

Inicialmente, la barra de navegación debe estar oculta. Cuando un usuario toca dos veces la pantalla, la barra de navegación debe aparecer con una animación, como lo que se puede ver en la galería de fotos del iPhone.

¿Cómo puedo hacer algo así? Las sugerencias siempre son apreciadas.


CÓDIGO SWIFT: Esto funciona completamente para iOS 3.2 y posterior.

override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) let tapGesture = UITapGestureRecognizer(target: self, action: "hideNavBarOntap")let tapGesture = UITapGestureRecognizer(target: self, action: "hideNavBarOntap") tapGesture.delegate = self self.view.addGestureRecognizer(tapGesture)

a continuación, escribir

func hideNavBarOntap() { if(self.navigationController?.navigationBar.hidden == false) { self.navigationController?.setNavigationBarHidden(true, animated: true) // hide nav bar is not hidden } else if(self.navigationController?.navigationBar.hidden == true) { self.navigationController?.setNavigationBarHidden(false, animated: true) // show nav bar } }


En Swift prueba esto,

self.navigationController?.navigationBarHidden = true //Hide self.navigationController?.navigationBarHidden = false //Show

o

self.navigationController?.setNavigationBarHidden(true, animated: true) //Hide self.navigationController?.setNavigationBarHidden(false, animated: true) //SHow


Este código te ayudará.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showHideNavbar:)]; [self.view addGestureRecognizer:tapGesture]; -(void) showHideNavbar:(id) sender { // write code to show/hide nav bar here // check if the Navigation Bar is shown if (self.navigationController.navigationBar.hidden == NO) { // hide the Navigation Bar [self.navigationController setNavigationBarHidden:YES animated:YES]; } // if Navigation Bar is already hidden else if (self.navigationController.navigationBar.hidden == YES) { // Show the Navigation Bar [self.navigationController setNavigationBarHidden:NO animated:YES]; } }


Esto no es algo que pueda caber en unas pocas líneas de código, pero este es un enfoque que podría funcionar para usted.

Para ocultar la barra de navegación:

[[self navigationController] setNavigationBarHidden:YES animated:YES];

Para mostrarlo:

[[self navigationController] setNavigationBarHidden:NO animated:YES];

La documentación para este método está disponible aquí .

Para escuchar un "doble clic" o tocar dos veces, subclase UIView y crear una instancia de esa subclase la propiedad de view del controlador de view .

En la subclase view, anule su -touchesEnded:withEvent: y cuente cuántos toques obtiene en un período de tiempo, midiendo el tiempo entre dos toques consecutivos, quizás con -timeIntervalSinceDate: O pruebe el resultado desde [touch tapCount] .

Si obtienes dos toques, tu vista subclasificada emite una NSNotification que tu controlador de vista ha registrado para escuchar.

Cuando el controlador de vista escucha la notificación, activa un selector que oculta o muestra la barra de navegación utilizando el código mencionado anteriormente, dependiendo del estado visible actual de la barra de navegación, al que se accede al leer la propiedad isHidden la barra de isHidden .

EDITAR

La parte de mi respuesta para manejar eventos tap es probablemente útil antes de iOS 3.1. La clase UIGestureRecognizer es probablemente un mejor enfoque para manejar los doble golpecitos, en estos días.

EDIT 2

La forma Swift de ocultar la barra de navegación es:

self.navigationController?.setNavigationBarHidden(true, animated: true)

Para mostrarlo:

self.navigationController?.setNavigationBarHidden(false, animated: true)


Para ocultar la barra de navegación:

[self.navigationController setNavigationBarHidden:YES animated:YES];

Para mostrar la barra de navegación:

[self.navigationController setNavigationBarHidden:NO animated:YES];


Primero lea la sección en la Guía de programación del controlador de visualización para iOS sobre ''Adoptar un diseño de pantalla completa para vistas de navegación'' y la sección sobre la misma para Vistas personalizadas. Si está intentando hacer algo como Photos.app, probablemente esté usando una vista de desplazamiento. Tenga en cuenta el comentario de que las barras de navegación agregan automáticamente una inserción de contenido de desplazamiento a su vista de desplazamiento para tener en cuenta la altura de la barra de navegación (y la barra de estado) por lo que debe restablecer la propiedad contentInset de su vista de desplazamiento a cero (UIEdgeInsetsZero) inmediatamente después configurando el estado inicial de la barra de navegación y antes de que aparezca la vista.

Luego, si tiene un solo toque que alternar la barra de navegación y / o la barra de estado para mostrar u ocultar, debe hacer dos cosas en su método de alternar. El primero parece ser guardar la propiedad contentOffset de la vista de desplazamiento antes de cambiar la propiedad oculta de NavigationBar y restaurar el valor guardado a contentOffset inmediatamente después. Y segundo para volver a poner a cero la propiedad contentInset para UIEdgeInsetsZero después de cambiar la propiedad navigationBarHidden. Además, si está alternando la barra de estado, debe cambiar su estado antes de cambiar el estado de la barra de navegación.


Una de las formas podría ser desactivando la barra de visibilidad "Muestra la barra de navegación" en el inspector de atributos. Esperamos que esto ayude a alguien.