536 Stimmen

Wie man die 1px untere Linie der UINavigationBar ausblendet

Ich habe eine App, bei der die Navigationsleiste manchmal mit dem Inhalt verschmelzen muss.

Weiß jemand, wie man diese lästige kleine Leiste loswerden oder ihre Farbe ändern kann?

Auf dem Bild unten habe ich die Situation - ich spreche von dieser 1px hohen Linie unter "Root View Controller"

Bildbeschreibung hier eingeben

4voto

makle Punkte 1177

Lösung in Swift 4.2:

private func removeHairlineFromNavbar() {
    UINavigationBar.appearance().setBackgroundImage(
        UIImage(),
        for: .any,
        barMetrics: .default)
    UINavigationBar.appearance().shadowImage = UIImage()
}

Einfach diese Funktion im ersten Viewcontroller platzieren und in viewdidload aufrufen

4voto

gpbl Punkte 4729

In iOS8, wenn Sie UINavigationBar.barStyle auf .Black setzen, können Sie den Hintergrund der Leiste als einfache Farbe ohne Rand setzen.

In Swift:

UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().barStyle = UIBarStyle.Black
UINavigationBar.appearance().barTintColor = UIColor.redColor()

4voto

user3344977 Punkte 3544

Hier ist eine sehr einfache Lösung:

self.navigationController.navigationBar.clipsToBounds = YES;

4voto

Bandyliuk Punkte 319

Einfache Lösung – Swift 5

  1. Erstellen Sie eine Erweiterung:

    extension UIImage {
    
        class func hideNavBarLine(color: UIColor) -> UIImage? {
    
            let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
            UIGraphicsBeginImageContext(rect.size)
            let context = UIGraphicsGetCurrentContext()
            context?.setFillColor(color.cgColor)
            context?.fill(rect)
    
            let navBarLine = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return navBarLine
        }
    }
  2. Fügen Sie dies zu viewDidLoad() hinzu:

    self.navigationController?.navigationBar.shadowImage = UIImage.hideNavBarLine(color: UIColor.clear)

2voto

Mariano Pardo Punkte 21

Für iOS 9 Benutzer hat dies bei mir funktioniert. Füge einfach dies hinzu:

UINavigationBar.appearance().shadowImage = UIImage()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X