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

0voto

Kelvin Fok Punkte 593

Hallo, das funktioniert für Swift 4.

    override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.isTranslucent = false
}

Dies muss in viewDidLayoutSubviews platziert werden, anstatt in viewDidLoad.

0voto

Marijn Punkte 1389

Eine nette kurze Swift-Funktion, um die Haarlinie in den Unteransichten zu finden, ist diese:

 func findHairLineInImageViewUnder(view view: UIView) -> UIImageView? {
    if let hairLineView = view as? UIImageView where hairLineView.bounds.size.height <= 1.0 {
        return hairLineView
    }

    if let hairLineView = view.subviews.flatMap({self.findHairLineInImageViewUnder(view: $0)}).first {
      return hairLineView
    }

    return nil
}

0voto

Joel Middendorf Punkte 62

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:

- (void)didAddSubview:(UIView *)subview
{
    [super didAddSubview:subview];

    if ([subview isKindOfClass:[UIImageView class]]) {
        [subview setClipsToBounds:YES];
    }
}

0voto

Gruntcakes Punkte 37284

Was für mich funktioniert hat und am einfachsten war, war ein png zu erstellen (es muss nur ein Pixel mit den erforderlichen Abmessungen sein) in der erforderlichen Farbe und dann das Hintergrundbild und das Schattenbild auf diesen Wert zu setzen:

let greenPixel = UIImage(named: "DerNameIhresPng")
navigationBar.setBackgroundImage(greenPixel, forBarMetrics: UIBarMetrics.Default)
navigationBar.shadowImage = greenPixel

0voto

Pavel Gurov Punkte 5547

Dies mag dumm klingen, aber dieser Haaransatz erscheint nur, wenn die Hintergrundfarbe der Ansicht des ViewController auf eine beliebige Farbe als Weiß eingestellt ist. Ich war schockiert, dieses Faktum zu erfahren.

Also, wenn du willst, dass es ohne viel Aufwand verschwindet, setze die Hintergrundfarbe der Controlleransicht AUF WEISS.

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