Isso não é algo que pode se encaixar em algumas linhas de código, mas é uma abordagem que pode funcionar para você.
Para ocultar a barra de navegação:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Para mostrá-lo:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
A documentação para este método está disponível aqui .
Para ouvir um "clique duplo" ou toque duas vezes, subclasse UIView
e faça com que uma instância dessa subclasse seja sua view
propriedade do controlador de exibição .
Na subclasse de exibição, substitua seu -touchesEnded:withEvent:
método e conte quantos toques você obtém em um período de tempo, medindo o tempo entre dois toques consecutivos, talvez com CACurrentMediaTime()
. Ou teste o resultado em [touch tapCount]
.
Se você der dois toques, sua visualização em subclasse emitirá uma NSNotification
que seu controlador de visualização registrou para escutar.
Quando o seu controlador de exibição ouve a notificação, ele dispara um seletor que oculta ou mostra a barra de navegação usando o código mencionado acima, dependendo do estado visível atual da barra de navegação, acessado através da leitura da isHidden
propriedade da barra de navegação .
EDITAR
A parte da minha resposta para lidar com eventos de toque provavelmente é útil antes do iOS 3.1. A UIGestureRecognizer
classe é provavelmente uma abordagem melhor para lidar com toques duplos hoje em dia.
EDIT 2
A maneira rápida de ocultar a barra de navegação é:
navigationController?.setNavigationBarHidden(true, animated: true)
Para mostrá-lo:
navigationController?.setNavigationBarHidden(false, animated: true)
Este código irá ajudá-lo.
fonte
Leia primeiro a seção no Guia de programação do View Controller para iOS sobre 'Adotando um layout de tela inteira para exibições de navegação' e a seção sobre o mesmo para Exibições personalizadas. Se você está tentando fazer algo como o Photos.app, provavelmente está usando uma exibição de rolagem. Observe o comentário de que as barras de navegação adicionam automaticamente um conteúdo de rolagem inserido à sua exibição de rolagem para levar em conta a altura da barra de navegação (e barra de status); portanto, você deve redefinir a propriedade contentInset da exibição de rolagem para zero (UIEdgeInsetsZero) logo após configurando o estado inicial da barra de navegação e antes que a visualização apareça.
Então, se você tiver um único toque que alterna a barra de navegação e / ou a barra de status para mostrar ou ocultar, é necessário fazer duas coisas no método de alternância. A primeira parece ser salvar a propriedade contentOffset da exibição de rolagem antes de alterar a propriedade oculta NavigationBar e restaurar seu valor salvo para contentOffset logo depois. E, em seguida, zere novamente a propriedade contentInset para UIEdgeInsetsZero depois de alterar a propriedade navigationBarHidden. Além disso, se você estiver alternando a barra de status, precisará alterar seu estado antes de alterar o estado da barra de navegação.
fonte
No Swift, tente isso,
ou
fonte
Para ocultar a barra de navegação:
Para mostrar a barra de navegação:
fonte
Aqui está uma solução muito rápida e simples:
Isso funcionará no toque único em vez do toque duplo. Além disso, ele mudará o comportamento do controlador de navegação, mesmo depois de pressionar ou abrir o controlador de exibição atual.
Você sempre pode modificar esse comportamento no seu controlador dentro das ações viewWillAppear: e viewWillDisappear: se desejar definir o comportamento apenas para um único controlador de exibição.
Aqui está a documentação :
fonte
Uma maneira seria desmarcar a barra Visibility "Shows Navigation Bar" no Attribute Inspector. Espero que isso ajude alguém.
fonte
No Swift 4.2 e no Xcode 10
Se você não deseja exibir a barra de navegação apenas no 1º VC, mas deseja exibir no 2º VC onword's
No seu 1º VC escreva este código.
fonte
fonte
hidesBarsOnTap
na propriedade UINavigationController sai para lidar com isso apenas com o iOS8 SDKhttps://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instp/UINavigationController/hidesBarsOnTap
fonte
CÓDIGO SWIFT: Funciona totalmente no iOS 3.2 e posterior.
então escreva
fonte