Dies kann nicht in einige Codezeilen passen, aber dies ist ein Ansatz, der für Sie möglicherweise funktioniert.
So blenden Sie die Navigationsleiste aus:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Um es zu zeigen:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
Eine Dokumentation zu dieser Methode finden Sie hier .
Um auf einen "Doppelklick" zu warten oder zweimal zu tippen, unterklassifizieren Sie UIView
eine Unterklasse und machen Sie eine Instanz dieser Unterklasse zu der view
Eigenschaft Ihres View Controllers .
Überschreiben -touchesEnded:withEvent:
Sie in der Ansichtsunterklasse die Methode und zählen Sie, wie viele Berührungen Sie in einer bestimmten Zeit erhalten, indem Sie die Zeit zwischen zwei aufeinanderfolgenden Taps messen, möglicherweise mit CACurrentMediaTime()
. Oder testen Sie das Ergebnis von [touch tapCount]
.
Wenn Sie zwei Taps erhalten, gibt Ihre untergeordnete Ansicht ein Problem aus, auf NSNotification
das sich Ihr View Controller registriert hat, um zu warten.
Wenn Ihr Ansichts-Controller die Benachrichtigung hört, wird ein Selektor ausgelöst, der die Navigationsleiste mit dem oben genannten Code entweder ausblendet oder anzeigt. Dies hängt vom aktuellen sichtbaren Status der Navigationsleiste ab, auf den durch Lesen der isHidden
Eigenschaft der Navigationsleiste zugegriffen wird .
BEARBEITEN
Der Teil meiner Antwort zur Behandlung von Tap-Ereignissen ist wahrscheinlich schon vor iOS 3.1 nützlich. Die UIGestureRecognizer
Klasse ist heutzutage wahrscheinlich ein besserer Ansatz für den Umgang mit Doppelklicks.
BEARBEITEN 2
Der schnelle Weg, um die Navigationsleiste auszublenden, ist:
navigationController?.setNavigationBarHidden(true, animated: true)
Um es zu zeigen:
navigationController?.setNavigationBarHidden(false, animated: true)
Dieser Code wird Ihnen helfen.
quelle
Lesen Sie zuerst den Abschnitt im View Controller-Programmierhandbuch für iOS zum Thema "Übernehmen eines Vollbild-Layouts für Navigationsansichten" und den entsprechenden Abschnitt für benutzerdefinierte Ansichten. Wenn Sie versuchen, etwas wie die Photos.app zu machen, verwenden Sie wahrscheinlich eine Bildlaufansicht. Beachten Sie den Kommentar, dass Navigationsleisten Ihrer Bildlaufansicht automatisch einen Bildlaufinhaltseinsatz hinzufügen, um die Höhe der Navigationsleiste (und der Statusleiste) zu berücksichtigen, sodass Sie die contentInset-Eigenschaft Ihrer Bildlaufansicht unmittelbar danach auf Null (UIEdgeInsetsZero) zurücksetzen müssen Einrichten des Ausgangszustands der Navigationsleiste und bevor die Ansicht angezeigt wird.
Wenn Sie dann einmal tippen, um die Navigationsleiste und / oder die Statusleiste zum Ein- oder Ausblenden umzuschalten, müssen Sie bei Ihrer Umschaltmethode zwei Dinge tun. Die erste Möglichkeit besteht darin, die contentOffset-Eigenschaft der Bildlaufansicht zu speichern, bevor Sie die versteckte NavigationBar-Eigenschaft ändern und Ihren gespeicherten Wert direkt danach in contentOffset wiederherstellen. Und zweitens, um die contentInset-Eigenschaft nach dem Ändern der navigationBarHidden-Eigenschaft erneut auf UIEdgeInsetsZero zu setzen. Wenn Sie die Statusleiste umschalten, müssen Sie den Status ändern, bevor Sie den Status der Navigationsleiste ändern.
quelle
In Swift versuchen Sie dies,
oder
quelle
So blenden Sie die Navigationsleiste aus:
So zeigen Sie die Navigationsleiste an:
quelle
Hier ist eine sehr schnelle und einfache Lösung:
Dies funktioniert bei einfachem Tippen anstelle von doppeltem Tippen. Außerdem ändert sich das Verhalten des Navigationscontrollers auch nach dem Drücken oder Poppen des aktuellen Ansichtscontrollers.
Sie können dieses Verhalten in Ihrem Controller jederzeit in den Aktionen viewWillAppear: und viewWillDisappear: ändern, wenn Sie das Verhalten nur für einen einzelnen View-Controller festlegen möchten.
Hier ist die Dokumentation :
quelle
Eine Möglichkeit besteht darin, das Kontrollkästchen "Sichtbarkeit der Leiste" im Attributinspektor zu deaktivieren. Hoffen Sie, dass dies jemandem hilft.
quelle
In Swift 4.2 und Xcode 10
Wenn Sie die Navigationsleiste nicht nur im 1. VC anzeigen möchten, sondern im 2. VC-Onword anzeigen möchten
Schreiben Sie diesen Code in Ihre 1. VC.
quelle
quelle
hidesBarsOnTap
on UINavigationController-Eigenschaft kommt heraus, um genau dies mit iOS8 SDK zu handhabenhttps://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instp/UINavigationController/hidesBarsOnTap
quelle
SWIFT CODE: Dies funktioniert vollständig für iOS 3.2 und höher.
dann schreibe
quelle