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 doble toque, subclase UIView
y haga una instancia de esa subclase view
propiedad de su controlador de vista .
En la subclase de vista, anule su -touchesEnded:withEvent:
método y cuente cuántos toques obtiene en una duración de tiempo, midiendo el tiempo entre dos toques consecutivos, tal vez con CACurrentMediaTime()
. O prueba el resultado de [touch tapCount]
.
Si obtiene dos toques, su vista de subclase emite y NSNotification
su controlador de vista se ha registrado para escuchar.
Cuando su controlador de vista escucha la notificación, dispara un selector que oculta o muestra la barra de navegación usando el código mencionado anteriormente, dependiendo del estado visible actual de la barra de navegación, al que se accede leyendo la isHidden
propiedad de la barra de navegación .
EDITAR
La parte de mi respuesta para manejar eventos de tap es probablemente útil antes de iOS 3.1. La UIGestureRecognizer
clase es probablemente un mejor enfoque para manejar doble toque, en estos días.
EDITAR 2
La forma rápida de ocultar la barra de navegación es:
navigationController?.setNavigationBarHidden(true, animated: true)
Para mostrarlo:
navigationController?.setNavigationBarHidden(false, animated: true)
Este código te ayudará.
fuente
Primero lea la sección en la Guía de programación del controlador de vista para iOS sobre 'Adoptar un diseño de pantalla completa para las vistas de navegación' y la sección más o menos igual para las vistas personalizadas. Si está intentando hacer algo como Photos.app, probablemente esté utilizando una vista de desplazamiento. Tenga en cuenta el comentario de que las barras de navegación agregan automáticamente un contenido de desplazamiento insertado en 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) justo 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 alterna la barra de navegación y / o la barra de estado para mostrar u ocultar, debe hacer dos cosas en su método de alternancia. El primero parece ser guardar la propiedad contentOffset de la vista de desplazamiento antes de cambiar la propiedad oculta NavigationBar y restaurar el valor guardado en contentOffset inmediatamente después. Y en segundo lugar, vuelva a poner a cero la propiedad contentInset en 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.
fuente
En Swift prueba esto,
o
fuente
Para ocultar la barra de navegación:
Para mostrar la barra de navegación:
fuente
Aquí hay una solución muy rápida y simple:
Esto funcionará con un solo toque en lugar de doble toque. 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 viewWillAppear: y viewWillDisappear: acciones si desea establecer el comportamiento solo para un único controlador de vista.
Aquí está la documentación :
fuente
Una forma podría ser desmarcando la barra de visibilidad "Muestra la barra de navegación" en el inspector de atributos. Espero que esto ayude a alguien.
fuente
En Swift 4.2 y Xcode 10
Si no desea mostrar la barra de navegación solo en 1st VC, pero desea mostrar en 2nd VC onword's
En su primer VC, escriba este código.
fuente
fuente
hidesBarsOnTap
en la propiedad UINavigationController sale solo para manejar esto con iOS8 SDKhttps://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instp/UINavigationController/hidesBarsOnTap
fuente
CÓDIGO SWIFT: funciona completamente para iOS 3.2 y versiones posteriores.
a continuación, escribir
fuente