Ich habe versucht, die NavigationBars-Grenze ohne Glück zu entfernen. Ich habe recherchiert und die Leute scheinen zu sagen, dass shadowImage und BackgroundImage auf Null gesetzt werden sollen, aber das funktioniert in meinem Fall nicht.
Mein Code
self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")
Illustration:
quelle
Swift 4 & Swift 5
Rand entfernen:
Grenze wiederherstellen:
quelle
Dadurch wird das Schattenbild vollständig entfernt
quelle
Mit Swift 2 können Sie dies folgendermaßen tun:
AppDelegate-Datei
Innerhalb der func-Anwendung (..., didFinishLaunchingWithOptions launchOptions: ...)
für Swift 3:
quelle
Schreiben Sie dies einfach in die Erweiterung von UINavigationBar
Und aus Ihrer Sicht Controller ...
Und um dies für jeden viewController rückgängig zu machen, übergeben Sie einfach false.
quelle
Vor
barStyle
dem.Black
Einstellen des Farbtons auf einstellen:quelle
Swift 5
Wenn Sie setBackgroundImage / shadowImage verwenden, um den Haaransatz auszublenden, tritt eine leichte Verzögerung auf. Diese Methode beseitigt die Verzögerung. Gutschrift an Chameleon Framework . Dies ist die Methode, die sie verwenden (in ObjC)
quelle
Die Antwort von Luca Davanzo ist großartig, aber sie funktioniert nicht in iOS 10. Ich habe sie so geändert, dass sie in iOS 10 und darunter funktioniert.
Sie können auch UINavigationController erweitern und dies abrufen.
removeFromSuperview()
on the line funktioniert unter iOS 10 nicht, daher habe ich das Alpha einfach auf 0 gesetzt, damit dieser eine Anruf überall kompatibel ist.quelle
height >= 1.0
. Bei iPhone-Modellen mit 3x Retina-Bildschirm (z. B. 8 Plus, XR ...) hat der Haaransatz eine Höhe von 0,33.Verwenden Sie zum Entfernen des Rahmens aus der UINavigationBar in Swift 3+:
quelle
für schnell 3
in
viewDidLoad
Methodequelle
Nur das hat bei mir funktioniert,
Ref
quelle
Aktualisiert für Swift 4, falls sich jemand wundert
Es ist jetzt noch weniger ausführlich.
quelle
Dies ist der Weg, wenn Sie dies tun möchten, ohne die Hintergrundfarbe zu ändern:
HINWEIS: Dies kann in einer Produktions-App abstürzen. Anscheinend mag die Navigationsleiste nicht, dass ihre Ansicht verschwindet
quelle
Die akzeptierte Antwort funktionierte für mich, aber ich bemerkte, dass in der Navigationsleiste ein deutliches Blinken zu sehen war, als ich wollte, dass das Schattenbild beim Zurückspringen oder Vorwärtsschieben zu einem anderen VC wieder angezeigt wird.
Bei Verwendung dieser Methode
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
in viewWillAppear wird die Schattenleiste im aktuellen Controller für sichtbare Ansichten ausgeblendet.Mit diesen beiden Methoden
In viewWillDisappear tritt das Blinken immer noch auf, jedoch nur, wenn das Schattenbild erneut angezeigt wird und nicht die Navigationsleiste selbst.
quelle
für den swift3 solltest du etwas anders schreiben:
quelle
Dies ist eine optimierte Version von Gaurav Chandaranas Antwort.
quelle
App-Delegat
quelle
Wenn Sie nur die unterste Zeile entfernen und die Volltonfarbe der Navigationsleiste beibehalten möchten, fügen Sie diese Codezeilen in viewDidLoad: Swift 3, 4: hinzu.
Frieden!
quelle
Die Grenzlinie ist eine UIImageView. Wenn Sie eine Unteransicht entfernen, bei der es sich um eine Bildansicht handelt, werden barButtonItems mit UIImageView entfernt. Der folgende Code hilft Ihnen beim Entfernen. Hoffe, das hilft jemandem, der mit einem Problem wie mir konfrontiert war.
Der Rand UIImageView hat nur eine Höhe von 0,5, sodass dieser Code nur diesen entfernt.
quelle
In AppDelegate hat dies das Format der NavBar global geändert und die untere Zeile / den Rand entfernt:
Es ist mir nicht gelungen, auf einem bestimmten VC etwas anderes zu implementieren, aber dies wird 90% der Menschen helfen
quelle
Dies ist die Antwort in schneller 3 Basis der Nate Cook Antwort
quelle
iOS 11 und Swift 4 Sie sollten versuchen, Folgendes zu befolgen, wenn Sie den Rand entfernen möchten, die Navigationsleiste jedoch nicht durchscheinend machen möchten
self.navigationBar.shadowImage = UIImage()
quelle
Fügen Sie in Ihrem benutzerdefinierten Navigationscontroller die folgenden Zeilen hinzu:
Wichtige Notiz
Die letzte Zeile ist wichtig, wenn Sie die viewDidLoad () -Methode in der ersten Zeile verwenden, da navigationController die Navigationsleiste neu zeichnen sollte. Sie können diese jedoch problemlos ohne layoutIfNeeded () in der viewWillAppear () -Methode verwenden, bevor die Navigationsleiste gezeichnet wird
quelle
Schnellere Methode von Jack Chen:
Verwenden von:
quelle
quelle