Come nascondere UINavigationBar 1px bottom line


443

Ho un'app che a volte ha bisogno della sua barra di navigazione per fondersi con il contenuto.

Qualcuno sa come sbarazzarsi o cambiare il colore di questa fastidiosa barretta?

Nell'immagine qui sotto ho una situazione - sto parlando di questa linea di altezza 1px sotto "Root View Controller"

inserisci qui la descrizione dell'immagine



come aumentare 1px dell'altezza di navigazione?
Suresh Durishetti,

Risposte:


738

Per iOS 13:

Usa la .shadowColorproprietà

Se questa proprietà è nulla o contiene il colore chiaro, la barra non visualizza ombre

Per esempio:

let navigationBar = navigationController?.navigationBar
let navigationBarAppearence = UINavigationBarAppearance()
navigationBarAppearence.shadowColor = .clear
navigationBar?.scrollEdgeAppearance = navigationBarAppearence

Per iOS 12 e versioni precedenti:

Per fare ciò, è necessario impostare un'immagine ombra personalizzata. Ma per mostrare l'immagine ombra è necessario anche impostare un'immagine di sfondo personalizzata, citando la documentazione di Apple:

Per visualizzare un'immagine ombra personalizzata, è necessario impostare anche un'immagine di sfondo personalizzata con il metodo setBackgroundImage (_: for :). Se viene utilizzata l'immagine di sfondo predefinita, verrà utilizzata l'immagine ombra predefinita indipendentemente dal valore di questa proprietà.

Così:

let navigationBar = navigationController!.navigationBar
navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"),
                                                        for: .default)
navigationBar.shadowImage = UIImage()

Sopra è l'unico modo "ufficiale" per nasconderlo. Sfortunatamente, rimuove la traslucenza della barra.

Non voglio un'immagine di sfondo, solo colore

Hai queste opzioni:

  1. Tinta unita, nessuna traslucenza:

    navigationBar.barTintColor = UIColor.redColor()
    navigationBar.isTranslucent = false
    navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationBar.shadowImage = UIImage()
  2. Crea una piccola immagine di sfondo piena di colore e usala.

  3. Utilizzare il metodo "hacky" descritto di seguito. Manterrà anche la barra traslucida.

Come mantenere la barra traslucida?

Per mantenere la traslucenza hai bisogno di un altro approccio, sembra un hack ma funziona bene. L'ombra che stiamo cercando di rimuovere è un'attaccatura UIImageViewda qualche parte sotto UINavigationBar. Possiamo trovarlo e nasconderlo / mostrarlo quando necessario.

Le istruzioni di seguito presuppongono che sia necessario nascondere l'attaccatura dei capelli solo in un controller della UINavigationControllergerarchia.

  1. Dichiara variabile d'istanza:

    private var shadowImageView: UIImageView?
  2. Aggiungi metodo che trova questa ombra (attaccatura dei capelli) UIImageView:

    private func findShadowImage(under view: UIView) -> UIImageView? {
        if view is UIImageView && view.bounds.size.height <= 1 {
            return (view as! UIImageView)
        }
    
        for subview in view.subviews {
            if let imageView = findShadowImage(under: subview) {
                return imageView
            }
        }
        return nil
    }
  3. Aggiungi / modifica viewWillAppear/viewWillDisappearmetodi:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    
        if shadowImageView == nil {
            shadowImageView = findShadowImage(under: navigationController!.navigationBar)
        }
        shadowImageView?.isHidden = true
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    
        shadowImageView?.isHidden = false
    }

Lo stesso metodo dovrebbe funzionare anche per l' UISearchBarattaccatura dei capelli e (quasi) qualsiasi altra cosa che devi nascondere :)

Mille grazie a @Leo Natan per l'idea originale!


104
Puoi anche impostare la vista della UINavigationBarproprietà:clipsToBounds = YES
cleverbit

3
@richarddas clipsToBounds = YESfunziona come un fascino! Grazie!
Romeo,

3
I clipToBounds non funzionano sempre per alcuni layout. Questa risposta ha funzionato perfettamente per me. Solo io ho creato una sottoclasse UINavigationBar e ho usato il codice sopra per nascondere l'immagine ombra nei metodi -layoutSubview. Grazie!
cgossain,

8
Solo per notare che ho avuto problemi in cui la mia barra di stato superiore di iOS diventa traslucida e ho potuto vedere la vista della mia tabella scorrere dietro la UINavigationBar. Ho risolto questo problema impostando setTranslucent = NO.
Vlad

2
In iOS 10 sembra che quando viewWillAppear viene chiamato non possiamo ottenereshadowImageView
xi.lin il

241

Di seguito può aiutare semplicemente!

Swift:

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

Obiettivo C:

[self.navigationController.navigationBar setValue:@(YES) forKeyPath:@"hidesShadow"];

6
Sono su Xcode 8 e sviluppatore per> iOS 8 e nessuno dei precedenti ha funzionato per me tranne questo.
Vakas,

2
Anche su XCode 8 e> iOS 8. Questa è l'unica risposta che ha funzionato per me.
cloudcal

1
Questa è l'unica risposta breve e semplice che ha funzionato per me per iOS 10 e Xcode 8.3.1. Grazie uomo.
Vishal Sonawane,

1
Objective-C: self.navigationController.navigationBar.shadowImage = [UIImage new];
Marcelo dos Santos,

1
Solo questo funziona per me in iOS 13.3.1 versione iPad.
Ravi,

145

Se vuoi solo usare un solido colore della barra di navigazione e lo hai impostato nello storyboard, usa questo codice nella tua AppDelegateclasse per rimuovere il bordo di 1 pixel tramite il proxy aspetto:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init]
                                  forBarPosition:UIBarPositionAny
                                      barMetrics:UIBarMetricsDefault];

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

2
Questo lo rende globale per OGNI barra di navigazione nella tua base di codice ... il più delle volte non è quello che vuoi.
Christoph,

97

Prova questo:

[[UINavigationBar appearance] setBackgroundImage: [UIImage new]  
                                   forBarMetrics: UIBarMetricsDefault];

[UINavigationBar appearance].shadowImage = [UIImage new];

L'immagine sotto ha la spiegazione (iOS7 NavigationBar):

inserisci qui la descrizione dell'immagine

E controlla questa domanda SO: iOS7 - Cambia il colore del bordo di UINavigationBar


Come ha detto Serhii, è necessario impostare un'immagine di sfondo personalizzata affinché l'immagine ombra venga accettata.
Akashivskyy,

3
fallo nel tuo AppDelegate.
myusuf3,

Ottima risposta ... Mi ha salvato la giornata _ / \ _
Akshay l'

@RPM Funziona alla grande su iOS 7,8,9,10. C'è lo stesso codice per la barra di navigazione di viewControlles in mezzo per Swift.
Akhrameev il

64

Volevo aggiungere la versione rapida della risposta di Serhii. Ho creato un UIBarExtension.swiftcon il seguente:

import Foundation
import UIKit

extension UINavigationBar {
    func hideBottomHairline() {
        self.hairlineImageView?.isHidden = true
    }

    func showBottomHairline() {
        self.hairlineImageView?.isHidden = false
    }
}

extension UIToolbar {
    func hideBottomHairline() {
        self.hairlineImageView?.isHidden = true
    }

    func showBottomHairline() {
        self.hairlineImageView?.isHidden = false
    }
}

extension UIView {
    fileprivate var hairlineImageView: UIImageView? {
        return hairlineImageView(in: self)
    }

    fileprivate func hairlineImageView(in view: UIView) -> UIImageView? {
        if let imageView = view as? UIImageView, imageView.bounds.height <= 1.0 {
            return imageView
        }

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

        return nil
    }
}

Grazie! Questa dovrebbe essere la risposta.
Peiwei,

Funziona con navigationBar ma non funziona con uitoolbar
TomSawyer,

Sto scoprendo con iOS 12 che non funziona più. :(.
Chris Prince,

Funziona alla grande iOS 13
ttorbik

Questa dovrebbe essere la risposta. funziona come per incanto in
iOS

63

Il modo rapido per farlo:

UINavigationBar.appearance().setBackgroundImage(
    UIImage(),
    forBarPosition: .Any,
    barMetrics: .Default)

UINavigationBar.appearance().shadowImage = UIImage()

2
È abbastanza raro arrivare così in fondo alla lista prima di trovare la risposta più elegante. +1!
sudo make install

3
Nasconde l'intero sfondo di UINavigationBar tho: /
user365314

Sbagliato, nasconde anche l'intero sfondo!
TomSawyer,

3
Nota: devi impostare isTranslucent di navigationBar su false
dmathewwws

19

Soluzione semplice in breve tempo

   let navigationBar = self.navigationController?.navigationBar
    navigationBar?.setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    navigationBar?.shadowImage = UIImage()

3
+1 Di tutte le risposte, questo è ciò che alla fine ha funzionato per me. Non ha confuso la barra di stato come altre risposte e risolve il problema di modificare solo una delle barre del controller di navigazione, non tutte le barre di navigazione nel progetto.
Joe Galind

Versione Swift 4.2: navigationBar? .SetBackgroundImage (UIImage (), per: UIBarPosition.any, barMetrics: UIBarMetrics.default) navigationBar? .ShadowImage = UIImage ()
airowe

16

Dopo aver studiato la risposta di Serhil, ho creato un pod UINavigationBar + Addition che può facilmente nascondere l'attaccatura dei capelli.

#import "UINavigationBar+Addition.h"

- (void)viewDidLoad {
    [super viewDidLoad];

    UINavigationBar *navigationBar = self.navigationController.navigationBar;
    [navigationBar hideBottomHairline];
}

16

In Swift 3.0

Modifica il tuo AppDelegate.swiftaggiungendo il seguente codice alla funzione dell'applicazione:

// Override point for customization after application launch.

// Remove border in navigationBar
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

16

A partire da iOS 13 esiste un'API di sistema per impostare o rimuovere l'ombra

UIKit utilizza shadowImage e la proprietà shadowColor per determinare l'aspetto dell'ombra. Quando shadowImage è zero, la barra visualizza un'ombra predefinita colorata in base al valore nella proprietà shadowColor. Se shadowColor è zero o contiene il colore clearColor, la barra non visualizza ombre.

    let appearance = UINavigationBarAppearance()
    appearance.shadowImage = nil
    appearance.shadowColor = nil
    navigationController.navigationBar.standardAppearance = appearance

https://developer.apple.com/documentation/uikit/uibarappearance/3198009-shadowimage


shadowImage e shadowColor non sono documentati nelle UINavigationBarAppearanceintestazioni !! Non lo troverei mai. Grazie, questo ha risolto i miei problemi al 100%
Roger Oba,

1
Sì, funziona bene anche per me su iOS 13 grazie mille @glotcha.
Yogesh Patel,

@glotcha Right ....
Digvijay,

Grazie. l'unica cosa che ha funzionato per me
alionthego,

13

Può anche essere nascosto dallo Storyboard (lavorando su Xcode 10.1)

Aggiungendo l'attributo di runtime: hidesShadow - Boolean - True

inserisci qui la descrizione dell'immagine


11

La soluzione di pxpgraphics è stata aggiornata per 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
    }

}

Ciao, sono nuovo su iOS e sto cercando di insegnarmi. Come si usa l'estensione? Ho un file controller di visualizzazione e inserisco queste estensioni al di fuori dell'ambito della classe. Ma allora come posso chiamare hide / showHairline ()? Non capisco davvero come usare le estensioni, ma è usato per così tante soluzioni, ma non capisco come siano implementate nel codice reale
Tommy K

Le estensioni aggiungono funzionalità alle tue classi esistenti. Qualsiasi classe estesa, struttura, enum, ecc. Avrà queste nuove funzionalità disponibili ogni volta che è necessario utilizzarle. Vedi di più qui: developer.apple.com/library/ios/documentation/Swift/Conceptual/…
tf.alves

quindi dovrei essere in grado di usare UINavigationController().navigationBar/toolbar.hide/showBottomHairline()allora no? Ci sto provando ma senza successo. Non capisco correttamente?
Tommy K,

11

Swift 4 // per nascondere la linea d'ombra della barra di navigazione

navigationController?.navigationBar.shadowImage = UIImage()

10

Uso un'estensione UINavigationBar che mi consente di nascondere / mostrare quell'ombra usando l'API UIAppearance o selezionando quale barra di navigazione deve nascondere / mostrare quell'ombra usando Storyboard (o codice sorgente). Ecco l'estensione:

import UIKit

private var flatAssociatedObjectKey: UInt8 = 0

/*
  An extension that adds a "flat" field to UINavigationBar. This flag, when
  enabled, removes the shadow under the navigation bar.
 */
@IBDesignable extension UINavigationBar {
    @IBInspectable var flat: Bool {
        get {
            guard let obj = objc_getAssociatedObject(self, &flatAssociatedObjectKey) as? NSNumber else {
                return false
            }
            return obj.boolValue;
        }

        set {
            if (newValue) {
                let void = UIImage()
                setBackgroundImage(void, forBarPosition: .Any, barMetrics: .Default)
                shadowImage = void
            } else {
                setBackgroundImage(nil, forBarPosition: .Any, barMetrics: .Default)
                shadowImage = nil
            }
            objc_setAssociatedObject(self, &flatAssociatedObjectKey, NSNumber(bool: newValue),
                    objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
    }
}

Ora, per disabilitare l'ombra in tutte le barre di navigazione devi usare:

UINavigationBar.appearance().flat = true

Oppure puoi abilitare / disabilitare questo comportamento usando gli storyboard:

Storyboard della barra di navigazione


@ NunoGonçalves, puoi pensare flatAssociatedObjectKeya un int unico (trattato come puntatore) per identificare l'oggetto associato. Qui è definito dall'indirizzo di memoria di una var privata. Ho aggiornato la risposta per aggiungere questa var. Vedi nshipster.com/associated-objects per maggiori informazioni.
Alvivi,

Buona soluzione ma funziona solo quando la barra di navigazione è impostata translucentsu false
ZYiOS,

9

Swift 4 testato SOLUZIONE LINEA

Nel Viewdidload() valore di default dell'utente impostato su Controller di navigazione true per la chiave "hidesShadow"

override func viewDidLoad() {
    super.viewDidLoad()

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

}

1
Funziona perfettamente !!
Prashant Tukadiya,

7

Swift ha detto questo

UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: .Any, barMetrics: .Default)
UINavigationBar.appearance().shadowImage = UIImage()

in

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool

E rimuove anche il colore di sfondo.
TomSawyer,

7

Un'altra opzione se vuoi preservare la traslucenza e non vuoi sottoclassare tutti UINavigationControllernella tua app:

#import <objc/runtime.h>

@implementation UINavigationController (NoShadow)

+ (void)load {
    Method original = class_getInstanceMethod(self, @selector(viewWillAppear:));
    Method swizzled = class_getInstanceMethod(self, @selector(swizzled_viewWillAppear:));
    method_exchangeImplementations(original, swizzled);
}

+ (UIImageView *)findHairlineImageViewUnder:(UIView *)view {
    if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
        return (UIImageView *)view;
    }

    for (UIView *subview in view.subviews) {
        UIImageView *imageView = [self findHairlineImageViewUnder:subview];
        if (imageView) {
            return imageView;
        }
    }

    return nil;
}

- (void)swizzled_viewWillAppear:(BOOL)animated {
    UIImageView *shadow = [UINavigationController findHairlineImageViewUnder:self.navigationBar];
    shadow.hidden = YES;

    [self swizzled_viewWillAppear:animated];
}

@end

6
Slightly Swift Solution 
func setGlobalAppearanceCharacteristics () {
    let navigationBarAppearace = UINavigationBar.appearance()
    navigationBarAppearace.tintColor = UIColor.white
    navigationBarAppearace.barTintColor = UIColor.blue
    navigationBarAppearace.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    navigationBarAppearace.shadowImage = UIImage()

}

Grazie James! Non riesco a capire perché qualcuno abbia votato la tua risposta.
Dănuț Mihai Florian,

se ne hai bisogno, puoi anche aggiungere: self.navigationController.navigationBar.translucent = false self.navigationController.navigationBar.clipsToBounds = false self.navigationController.navigationBar.shadowImage = UIImage () self.navigationController.olor ()
Alessandro Ornano,

5

Soluzione in Swift 4.2:

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

Basta inserire questa funzione nel primo Viewcontroller e richiamarla viewdidload


4

In iOS8, se si imposta UINavigationBar.barStylesu .Blackè possibile impostare lo sfondo della barra come colore normale senza il bordo.

In Swift:

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

Questa è la soluzione più pulita e il modo migliore per raggiungere questo obiettivo. Se non devi supportare <iOS 8, non c'è motivo di non usare questa risposta. Grazie.
user3344977

Funziona alla grande. L'ho impostato anche nello storyboard, quindi non avevo nemmeno bisogno di alcun codice.
vikzilla,

1
In questo modo ti dà una linea bianca molto piccola al posto dell'ombra standard.
Vegard

4

Soluzione a due linee che funziona per me. Prova ad aggiungere questo nel metodo ViewDidLoad:

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

solo questo ha funzionato per me
Usama bin Attique,

3

Ecco una soluzione molto semplice:

self.navigationController.navigationBar.clipsToBounds = YES;

37
Anche l'area della barra di stato viene ritagliata.
Fury,

3

Soluzione semplice - Swift 5

  1. Crea un'estensione:

    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. Aggiungi questo a viewDidLoad():

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

2

Per gli utenti di iOS 9, questo ha funzionato per me. aggiungi questo:

UINavigationBar.appearance().shadowImage = UIImage()

2

Il problema con l'impostazione di un'immagine di sfondo è che rimuove la sfocatura. Puoi rimuoverlo senza impostare un'immagine di sfondo. Vedi la mia risposta qui .


2

È necessario aggiungere una vista alla fine di UISearchBar

let rect = searchController.searchBar.frame;
let lineView : UIView = UIView.init(frame: CGRect.init(x: 0, y: rect.size.height-1, width: rect.size.width, height: 1))
lineView.backgroundColor = UIColor.init(hexString: "8CC73E")
searchController.searchBar.addSubview(lineView)

Non riesco a credere che questo sia ancora un problema - l'ho appena scoperto di nuovo! Ma questa soluzione è la migliore possibile al momento; Grazie @Socheat
RichAppz,

1

So che questo è un vecchio thread, ma ho trovato una soluzione che funziona davvero bene:

Sottoclasse UINavigationBar. Nella sottoclasse UINavigationBar, sovrascrivi didAddSubview con il seguente codice:

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

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

1

Ho appena creato un'estensione per questo ... Mi dispiace per la formattazione (questa è la mia prima risposta).

Uso:

  override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.hideShadow = true
}

Estensione:

 UINavigationController.swift
//  Created by Ricardo López Rey on 16/7/15.

import Foundation


struct UINavigationControllerExtension {
    static var hideShadowKey : String = "HideShadow"
static let backColor = UIColor(red: 247/255, green: 247/255, blue: 248/255, alpha: 1.0)
}

extension UINavigationController {

    var hideShadow : Bool {
        get {
            if let ret =  objc_getAssociatedObject(self, &UINavigationControllerExtension.hideShadowKey) as? Bool {
                return ret
            } else {
                return false
            }


        }
        set {
            objc_setAssociatedObject(self,&UINavigationControllerExtension.hideShadowKey,newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))

            if newValue {


            self.navigationBar.setBackgroundImage(solidImage(UINavigationControllerExtension.backColor), forBarMetrics: UIBarMetrics.Default)

                self.navigationBar.shadowImage = solidImage(UIColor.clearColor())
            } else {
                self.navigationBar.setBackgroundImage(nil, forBarMetrics: UIBarMetrics.Default)
            }
        }
    }

    private func solidImage(color: UIColor, size: CGSize = CGSize(width: 1,height: 1)) -> UIImage {
        var rect = CGRectMake(0, 0, size.width, size.height)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFill(rect)
        var image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }


}

1

All'interno di AppDelegate , questo ha cambiato globalmente il formato di NavBar:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    UINavigationBar.appearance().shadowImage = UIImage()
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().barTintColor = UIColor.redColor()
    UINavigationBar.appearance().translucent = false
    UINavigationBar.appearance().clipsToBounds = false
    UINavigationBar.appearance().backgroundColor = UIColor.redColor()
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : (UIFont(name: "FONT NAME", size: 18))!, NSForegroundColorAttributeName: UIColor.whiteColor()] }

Non sono riusciti a implementare nulla di diverso su un VC specifico, ma questo aiuterà il 90% delle persone


1
-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    UIImage *emptyImage = [UIImage new];
    self.navigationController.navigationBar.shadowImage = emptyImage;
    [self.navigationController.navigationBar setBackgroundImage:emptyImage forBarMetrics:UIBarMetricsDefault];
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.