Ich habe eine App, die manchmal eine Navigationsleiste benötigt, um sich in den Inhalt einzufügen.
Weiß jemand, wie man diese nervige kleine Leiste loswird oder die Farbe ändert?
Auf dem Bild unten Situation habe ich - ich spreche über diese 1px Höhenlinie unter "Root View Controller"
ios
objective-c
swift
ipad
uinavigationbar
Szymon Kuczur
quelle
quelle
Antworten:
Für iOS 13:
Verwenden Sie die
.shadowColor
EigenschaftZum Beispiel:
Für iOS 12 und niedriger:
Dazu sollten Sie ein benutzerdefiniertes Schattenbild festlegen. Damit das Schattenbild angezeigt wird, müssen Sie jedoch auch ein benutzerdefiniertes Hintergrundbild festlegen. Zitat aus der Apple-Dokumentation:
Damit:
Oben ist der einzige "offizielle" Weg, es zu verstecken. Leider wird die Transluzenz von Bar entfernt.
Ich möchte kein Hintergrundbild, nur Farbe
Sie haben folgende Möglichkeiten:
Einfarbig, keine Transluzenz:
Erstellen Sie ein kleines, mit Farbe gefülltes Hintergrundbild und verwenden Sie es.
Verwenden Sie die unten beschriebene 'hacky'-Methode. Es wird auch Balken durchscheinend halten.
Wie hält man den Balken durchscheinend?
Um die Transluzenz zu erhalten, benötigen Sie einen anderen Ansatz. Es sieht aus wie ein Hack, funktioniert aber gut. Der Schatten, den wir entfernen wollen, ist
UIImageView
irgendwo darunter ein HaaransatzUINavigationBar
. Wir können es finden und bei Bedarf verstecken / zeigen.In den folgenden Anweisungen wird davon ausgegangen, dass der Haaransatz nur in einem Controller Ihrer
UINavigationController
Hierarchie versteckt sein muss .Instanzvariable deklarieren:
Methode hinzufügen, die diesen Schatten findet (Haaransatz)
UIImageView:
viewWillAppear/viewWillDisappear
Methoden hinzufügen / bearbeiten :Die gleiche Methode sollte auch für den
UISearchBar
Haaransatz funktionieren und (fast) alles andere, was Sie verstecken müssen :)Vielen Dank an @Leo Natan für die ursprüngliche Idee!
quelle
UINavigationBar
EigenschaftclipsToBounds = YES
clipsToBounds = YES
wirkt wie ein Zauber! Vielen Dank!viewWillAppear
aufgerufen wird, wir nicht bekommen könnenshadowImageView
Unten kann einfach helfen!
Schnell:
Ziel c:
quelle
Wenn Sie nur eine feste Navigationsleistenfarbe verwenden möchten und diese in Ihrem Storyboard eingerichtet haben, verwenden Sie diesen Code in Ihrer
AppDelegate
Klasse, um den 1-Pixel-Rand über den Darstellungs-Proxy zu entfernen:quelle
Versuche dies:
Das folgende Bild enthält die Erklärung (iOS7 NavigationBar):
Überprüfen Sie diese SO-Frage: iOS7 - Ändern Sie die Rahmenfarbe der UINavigationBar
quelle
Wollte die Swift-Version von Serhiis Antwort hinzufügen. Ich habe eine
UIBarExtension.swift
mit folgendem erstellt:quelle
Der schnelle Weg, es zu tun:
quelle
Einfache Lösung in kurzer Zeit
quelle
Nachdem ich die Antwort von Serhil studiert hatte, erstellte ich einen Pod UINavigationBar + Addition , der den Haaransatz leicht verbergen kann.
quelle
In Swift 3.0
Bearbeiten Sie Ihre,
AppDelegate.swift
indem Sie Ihrer Anwendungsfunktion den folgenden Code hinzufügen:quelle
Ab iOS 13 gibt es eine System-API zum Festlegen oder Entfernen des Schattens
https://developer.apple.com/documentation/uikit/uibarappearance/3198009-shadowimage
quelle
UINavigationBarAppearance
Headern dokumentiert !! Ich würde es nie finden. Danke, das hat meine Probleme zu 100% gelöstKann auch vor Storyboard ausgeblendet werden (Arbeiten an Xcode 10.1)
Durch Hinzufügen eines Laufzeitattributs: hidesShadow - Boolean - True
quelle
Die Lösung von pxpgraphics wurde für Swift 2.0 aktualisiert
quelle
UINavigationController().navigationBar/toolbar.hide/showBottomHairline()
nein benutzen können ? Ich versuche das, aber ohne Erfolg. Verstehe ich nicht richtig?Swift 4 // zum Ausblenden der Schattenlinie der Navigationsleiste
quelle
Ich verwende eine UINavigationBar-Erweiterung, mit der ich diesen Schatten mithilfe der UIAppearance-API ausblenden / anzeigen oder auswählen kann, welche Navigationsleiste diesen Schatten mithilfe von Storyboard (oder Quellcode) ausblenden / anzeigen soll. Hier ist die Erweiterung:
Um den Schatten in allen Navigationsleisten zu deaktivieren, müssen Sie Folgendes verwenden:
Oder Sie können dieses Verhalten mithilfe von Storyboards aktivieren / deaktivieren:
quelle
flatAssociatedObjectKey
ein eindeutiges int (als Zeiger behandelt) vorstellen, um das zugehörige Objekt zu identifizieren. Hier wird durch die Speicheradresse einer privaten Variable definiert. Ich habe die Antwort aktualisiert, um diese Variable hinzuzufügen. Weitere Informationen finden Sie unter nshipster.com/associated-objects .translucent
auf false gesetzt istSwift 4 testete EINE LINIENLÖSUNG
In
Viewdidload()
Set Navigation Controller ist der Standardwert true für den Schlüssel "hidesShadow".quelle
Swift hat das gesagt
im
quelle
Eine weitere Option, wenn Sie die Transluzenz beibehalten und nicht alle
UINavigationController
in Ihrer App unterklassifizieren möchten :quelle
quelle
Lösung in Swift 4.2:
Stellen Sie diese Funktion einfach auf den ersten Viewcontroller und rufen Sie sie auf
viewdidload
quelle
In iOS8, wenn Sie die Einstellung
UINavigationBar.barStyle
auf setzen.Black
Sie den Hintergrund der Leiste als unifarben ohne Rand festlegen.In Swift:
quelle
Zwei-Zeilen-Lösung, die für mich funktioniert. Versuchen Sie, dies in der ViewDidLoad-Methode hinzuzufügen:
quelle
Hier ist eine sehr einfache Lösung:
quelle
Einfache Lösung - Swift 5
Erstellen Sie eine Erweiterung:
Fügen Sie dies hinzu zu
viewDidLoad()
:quelle
Für iOS 9-Benutzer hat dies bei mir funktioniert. füge einfach Folgendes hinzu:
quelle
Das Problem beim Festlegen eines Hintergrundbilds besteht darin, dass Unschärfen beseitigt werden. Sie können es entfernen, ohne ein Hintergrundbild festzulegen. Siehe meine Antwort hier .
quelle
Sie sollten eine Ansicht am unteren Rand der UISearchBar hinzufügen
quelle
Ich weiß, dass dies ein alter Thread ist, aber ich habe eine Lösung gefunden, die wirklich gut funktioniert:
Unterklasse UINavigationBar. Überschreiben Sie in Ihrer UINavigationBar-Unterklasse didAddSubview mit dem folgenden Code:
quelle
Ich habe gerade eine Erweiterung dafür erstellt ... Entschuldigung für die Formatierung (dies ist meine erste Antwort).
Verwendungszweck:
Erweiterung:
quelle
In AppDelegate hat dies das Format der NavBar global geändert:
Es ist mir nicht gelungen, auf einem bestimmten VC etwas anderes zu implementieren, aber dies wird 90% der Menschen helfen
quelle
quelle