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

16voto

smohn Punkte 401

In Swift 3.0

Bearbeiten Sie Ihre AppDelegate.swift, indem Sie den folgenden Code zu Ihrer Anwendungsfunktion hinzufügen:

// Override-Punkt für die Anpassung nach dem Start der Anwendung.

// Rand in Navigationssymbolleiste entfernen
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

13voto

Faris Muhammed Punkte 762

Swift 4 //zum Ausblenden der Schattenlinie der Navigationsleiste

navigationController?.navigationBar.shadowImage = UIImage()

11voto

Sachin Rasane Punkte 1435

Swift 4 getestet EINE ZEILE LÖSUNG

In Viewdidload() Setzen Sie den Navigationscontroller-Wert auf true für den Schlüssel "hidesShadow"

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")

}

11voto

tf.alves Punkte 946

Lösung von pxpgraphics aktualisiert für Swift 2.0

extension UINavigationBar {

    func hideBottomHairline()
    {
        hairlineImageViewInNavigationBar(self)?.hidden = true
    }

    func showBottomHairline()
    {
        hairlineImageViewInNavigationBar(self)?.hidden = false
    }

    private func hairlineImageViewInNavigationBar(view: UIView) -> UIImageView?
    {
        if let imageView = view as? UIImageView where imageView.bounds.height <= 1
        {
            return imageView
        }

        for subview: UIView in view.subviews
        {
            if let imageView = hairlineImageViewInNavigationBar(subview)
            {
                return imageView
            }
        }

        return nil
    }

}

extension UIToolbar
{

    func hideHairline()
    {
        let navigationBarImageView = hairlineImageViewInToolbar(self)?.hidden = true
    }

    func showHairline()
    {
        let navigationBarImageView = hairlineImageViewInToolbar(self)?.hidden = false
    }

    private func hairlineImageViewInToolbar(view: UIView) -> UIImageView?
    {
        if let imageView = view as? UIImageView where imageView.bounds.height <= 1
        {
            return imageView
        }

        for subview: UIView in view.subviews
        {
            if let imageView = hairlineImageViewInToolbar(subview)
            {
                return imageView
            }
        }

        return nil
    }

}

10voto

Chathuranga Silva Punkte 6925

Für iOS 13+

Der Trick besteht darin, 'UINavigationBarAppearance' mit TransparentBackground zu initialisieren. Dann können Sie ganz einfach die horizontale Linie der Navigationsleiste entfernen.

let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
appearance.backgroundColor = .green // Erforderliche Hintergrundfarbe

Fügen Sie schließlich die Erscheinungsänderungen zum Navigationspunkt hinzu, wie von Apple vorgeschlagen.

self.navigationItem.standardAppearance = appearance
self.navigationItem.scrollEdgeAppearance = appearance
self.navigationItem.compactAppearance = appearance

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