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

user1122069 Punkte 1647

Die schwarze Balkenoptik hat es für mich getan.

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

Alle Eigenschaften, die ich habe (sicherheitshalber):

    [[UINavigationBar appearance] setBarTintColor:color];
    [[UINavigationBar appearance] setTranslucent:NO];
    [[UINavigationBar appearance] setShadowImage:[UIImage new]];
    [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

0voto

Ankur Lahiry Punkte 1833

Schreiben Sie Ihren eigenen Initialisierer :D

import Foundation
import UIKit

extension UINavigationController {
    convenience init(rootViewController : UIViewController, hidesShadow : Bool) {
        self.init(rootViewController : rootViewController)
        self.navigationBar.setValue(hidesShadow, forKey: "hidesShadow")
        if hidesShadow {
            self.extendedLayoutIncludesOpaqueBars = true
            self.navigationBar.isTranslucent = false 
        }
    }
}

0voto

Maysam Punkte 7014

Mein Ansatz:

UINavigationBar.appearance().setBackgroundImage(
            UIImage(),
            forBarPosition: .Any,
            barMetrics: .Default)
    var _width:CGFloat! = self.navigationController?.navigationBar.layer.frame.width
            var _height:CGFloat! = self.navigationController?.navigationBar.layer.frame.height
            var navBarBg = UIView(frame:CGRectMake(0, 0, _width, _height))
            //feste Farbe für Hintergrund
            navBarBg.backgroundColor = UIColor.orangeColor()
            view.addSubview(navBarBg)

0voto

jwswart Punkte 1216

Hier ist eine weitere Option - Ich denke, das funktioniert nur, wenn Sie keine Transluzenz in Ihrer Navigationsleiste benötigen (ich nicht). Ich habe einfach eine 1 Pixel hohe UIView am unteren Rand der Navigationsleiste (1 Pixel unterhalb der Navigationsleiste) mit derselben Farbe wie meiner Navigationsleiste hinzugefügt:

UIView *view = [[UIView alloc] init];
[view setBackgroundColor:self.navigationController.navigationBar.barTintColor];
[self.navigationController.navigationBar addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.height.equalTo(@(1.0f));
    make.leading.trailing.equalTo(self.navigationController.navigationBar);
    make.bottom.equalTo(self.navigationController.navigationBar).offset(1.0f);
}];

Ich füge die Constraints mit Masonry hinzu.

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