Montag, Mai 25, 2020

Set NavigationBar hintergrund eine solide Farbe

Gibt es eine Möglichkeit, ich kann den hintergrund der Navigationsleiste des UINavigationController auf eine Farbe?

Ich weiß, ich kann ändern die Farbe, aber trotzdem lässt mich das mit dem Farbverlauf/Glas-Effekt.

Irgendeiner Weise kann ich es loswerden, und müssen nur eine einfache alte Feste Farbe?

InformationsquelleAutor MartinHN | 2012-04-24

5 Kommentare

  1. 5

    Ich glaube, Sie haben Unterklasse UINavigationBar und überschreiben -(void)drawRect:(CGRect)rect:

    UIColor *colorFlat = /* any UIColor*/
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [colorFlat CGColor]);
    CGContextFillRect(context, rect);
    • Danke. Funktioniert wie ein Charme. Um die Farben der Schaltflächen, änderte ich die Farbe der Navigation Bar, und Sie erhalten die Farbe. Genau wie ich es erwartet habe.
    • Wissen Sie, wenn es möglich zu machen über das Aussehen proxy? [[UINavigationBar appearance] .....];
    • Ich weiß nicht, ich verwende diesen code in einem Projekt mit iOS 4.2, wenn das Aussehen nicht mehr verfügbar war
    • Überschreiben drawRect verursacht Probleme auf iOS7; es wird 44 px und hinterlässt eine leere statusBar
  2. 46

    Den folgenden code auch Ergebnisse in solide Farbe der navigation bar:

    [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setBackgroundColor:[UIColor redColor]];
    • Werden Sie sicher, dass auch die Farbe oder die Schaltflächen auf der Navigationsleiste werden nicht die Farbe,: [[UINavigationBar appearance] setTintColor:[UIColor redColor]];
    • Wo tun Sie dies? Ich bin versucht, es zu tun in der viewDidLoad des Ansicht-Controllers mit der Navigationsleiste, und es scheint nicht zu wirken. Muss es getan werden, irgendwann zuvor. Ich habe ein storyboard, die zu sein scheint überschreiben es.
    • David, es getan werden muss, bevor Sie die Ansicht. Konfiguration der „Erscheinung“ aktualisiert nicht sichtbaren Ansichten. Wenn Sie möchten, zu setzen, weltweit der beste Ort, es zu tun, wäre in application:didFinishLaunchingWithOptions:.
  3. 0

    Ich verwendet, um zu überschreiben, drawRect-Methode und Füllfarbe; aber nach der iOS7-Aktualisierung verursacht es einige Probleme auf UINavigationBar. Wenn Sie schreiben Ihre eigenen drawrect-Methode, auch wenn Sie den Aufruf [super drawRect], es ändert sich die bar dimension und Sie am Ende mit einer navigationBar mit 44 Pixel Höhe. Die Statusleiste ist leer.

    Erhalten eine solide farbigen navigationBar, habe ich ein Bild als hintergrund-Bild (ein kleines solid farbigen Bild tun wird, da Sie Dehnung) und fügte diese Zeilen in der initWithFrame-Methode der UINavigationBar Unterklasse:

    [self setBackgroundColor:[UIColor clearColor]]     
    [[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"bgimage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5) resizingMode:UIImageResizingModeStretch] forBarMetrics:UIBarMetricsDefault]; 
  4. 0

    Den folgenden code bei mir funktioniert:

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
    self.navigationController.navigationBar.translucent = NO;
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
  5. -4

    Erstellen Sie eine CustomUIViewController erweitert UIViewController und überschreiben viewDidLoad etwas wie dies:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //Do any additional setup after loading the view from its nib.
        self.view.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
    }

    Danach, nutzen Sie Ihre CustomUIViewController im Controller.

    Credits

    • Ist nicht möglich das zu machen ohne ein Bild?
    • Shure, sorry für den Fehler, versuchen Sie es mit: [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0]
    • Kein Glück. Sollte ich nicht den hintergrund auf der navigationbar? z.B. self.navigationController.navigationBar.backgroundColor? Was nicht funktioniert 🙂
    • Frage ist, wie setzen navbar bg Farbe, nicht uiviewcontroller Hg Farbe

Kostenlose Online-Tests