To nie jest coś, co można zmieścić w kilku wierszach kodu, ale jest to jedna z metod, która może Ci się przydać.
Aby ukryć pasek nawigacji:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Aby to pokazać:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
Dokumentacja dotycząca tej metody jest dostępna tutaj .
Aby nasłuchiwać „dwukrotnego kliknięcia” lub podwójnego dotknięcia, podklasę UIView
i utwórz instancję tej podklasy jako view
właściwość kontrolera widoku .
W podklasie widoku zastąp jej -touchesEnded:withEvent:
metodę i policz, ile dotknięć uzyskasz w określonym czasie, mierząc czas między dwoma kolejnymi dotknięciami, być może z CACurrentMediaTime()
. Lub przetestuj wynik z [touch tapCount]
.
Jeśli uzyskasz dwa dotknięcia, Twój podklasowy widok zgłasza błąd, NSNotification
którego kontroler widoku zarejestrował do nasłuchiwania.
Gdy kontroler widoku usłyszy powiadomienie, uruchamia selektor, który ukrywa lub wyświetla pasek nawigacji przy użyciu wyżej wymienionego kodu, w zależności od bieżącego widocznego stanu paska nawigacji, do którego można uzyskać dostęp poprzez odczytanie właściwości paska nawigacji isHidden
.
EDYTOWAĆ
Część mojej odpowiedzi dotycząca obsługi zdarzeń dotknięcia jest prawdopodobnie przydatna jeszcze przed iOS 3.1. Ta UIGestureRecognizer
klasa jest obecnie prawdopodobnie lepszym podejściem do obsługi podwójnych dotknięć.
EDYCJA 2
Szybki sposób na ukrycie paska nawigacji to:
navigationController?.setNavigationBarHidden(true, animated: true)
Aby to pokazać:
navigationController?.setNavigationBarHidden(false, animated: true)
Ten kod ci pomoże.
źródło
Najpierw przeczytaj sekcję w przewodniku programowania kontrolera widoku dla systemu iOS o „Przyjmowaniu układu pełnoekranowego dla widoków nawigacji” oraz sekcję o tym samym dla widoków niestandardowych. Jeśli próbujesz zrobić coś takiego jak Photos.app, prawdopodobnie używasz widoku przewijania. Zwróć uwagę na komentarz, że paski nawigacji automatycznie dodają wstawkę zawartości przewijania do widoku przewijania, aby uwzględnić wysokość paska nawigacji (i paska stanu), więc musisz zresetować właściwość contentInset widoku przewijania z powrotem do zera (UIEdgeInsetsZero) zaraz po konfigurowanie początkowego stanu paska nawigacji i przed pojawieniem się widoku.
Następnie, jeśli masz jedno dotknięcie, które przełącza pasek nawigacji i / lub pasek stanu, aby pokazać lub ukryć, musisz zrobić dwie rzeczy w metodzie przełączania. Pierwsza wydaje się polegać na zapisaniu właściwości contentOffset widoku przewijania przed zmianą właściwości ukrytej NavigationBar i natychmiastowym przywróceniu zapisanej wartości do contentOffset. I ponownie wyzeruj właściwość contentInset na UIEdgeInsetsZero po zmianie właściwości navigationBarHidden. Ponadto, jeśli przełączasz pasek stanu, musisz zmienić jego stan, zanim zmienisz stan paska nawigacji.
źródło
W Szybkim spróbuj tego,
lub
źródło
Aby ukryć pasek nawigacji:
Aby wyświetlić pasek nawigacji:
źródło
Oto bardzo szybkie i proste rozwiązanie:
Będzie to działać przy jednym dotknięciu zamiast podwójnego dotknięcia. Zmieni również zachowanie kontrolera nawigacji nawet po naciśnięciu lub wyskakiwaniu bieżącego kontrolera widoku.
Zawsze możesz zmodyfikować to zachowanie w kontrolerze w ramach akcji viewWillAppear: i viewWillDisappear:, jeśli chcesz ustawić zachowanie tylko dla jednego kontrolera widoku.
Oto dokumentacja :
źródło
Jednym ze sposobów może być odznaczenie widoczności paska „Pokazuje pasek nawigacji” w Inspektorze atrybutów. Mam nadzieję, że to komuś pomoże.
źródło
W Swift 4.2 i Xcode 10
Jeśli nie chcesz wyświetlać paska nawigacji tylko w pierwszym VC, ale chcesz wyświetlać go w drugim VC onword
W swoim pierwszym VC napisz ten kod.
źródło
źródło
hidesBarsOnTap
we właściwości UINavigationController wychodzi, aby obsłużyć to właśnie za pomocą zestawu SDK systemu iOS8https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instp/UINavigationController/hidesBarsOnTap
źródło
KOD SWIFT: działa w pełni na iOS 3.2 i nowszych.
następnie napisz
źródło