Barra di navigazione dell'iPhone Colore del testo del titolo


283

Sembra che il colore del titolo della barra di navigazione iOS sia bianco per impostazione predefinita. C'è un modo per cambiarlo in un colore diverso?

Sono a conoscenza navigationItem.titleViewdell'approccio che utilizza un'immagine. Poiché le mie capacità di progettazione sono limitate e non sono riuscito a ottenere lo standard lucido, preferisco cambiare il colore del testo.

Qualsiasi approfondimento sarebbe molto apprezzato.


Ho appena pubblicato un pezzo di codice, basato sulla risposta di Steven Fisher, che semplifica il processo di aggiunta di titoli colorati personalizzati alla barra di navigazione. Supporta anche la modifica del titolo. Cercalo! Non ti deluderà.
Erik B,

1
Erik: Ho messo una nota sulla tua risposta nella mia. Aggiornerei semplicemente la mia risposta con il tuo codice, ma non vorrei prendere i tuoi voti positivi. Soluzione intelligente, a proposito.
Steven Fisher,

Risposte:


423

Approccio moderno

Il modo moderno, per l'intero controller di navigazione ... farlo una volta, quando viene caricata la vista radice del controller di navigazione.

[self.navigationController.navigationBar setTitleTextAttributes:
   @{NSForegroundColorAttributeName:[UIColor yellowColor]}];

Tuttavia, ciò non sembra avere effetto nelle viste successive.

Approccio classico

Alla vecchia maniera, per controller di visualizzazione (queste costanti sono per iOS 6, ma se vuoi farlo per controller di visualizzazione sull'aspetto di iOS 7, vorrai lo stesso approccio ma con costanti diverse):

Devi usare a UILabelcome titleViewdi navigationItem.

L'etichetta dovrebbe:

  • Avere un colore di sfondo chiaro ( label.backgroundColor = [UIColor clearColor]).
  • Usa il carattere di sistema in grassetto 20pt ( label.font = [UIFont boldSystemFontOfSize: 20.0f]).
  • Avere un'ombra di nero con il 50% di alfa ( label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]).
  • Ti consigliamo di impostare anche l'allineamento del testo su centrato ( label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterper SDK meno recenti).

Imposta il colore del testo dell'etichetta su qualsiasi colore personalizzato desideri. Vuoi un colore che non induca il testo a fondersi in ombra, che sarebbe difficile da leggere.

L'ho risolto attraverso tentativi ed errori, ma i valori che ho scoperto sono in fin dei conti troppo semplici per non essere ciò che Apple ha scelto. :)

Se si desidera verificare questo, cadere questo codice in initWithNibName:bundle:in PageThreeViewController.mdi Apple campione NavBar . Ciò sostituirà il testo con un'etichetta gialla. Questo dovrebbe essere indistinguibile dall'originale prodotto dal codice Apple, ad eccezione del colore.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // this will appear as the title in the navigation bar
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = NSTextAlignmentCenter;
                           // ^-Use UITextAlignmentCenter for older SDKs.
        label.textColor = [UIColor yellowColor]; // change this color
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"PageThreeTitle", @"");
        [label sizeToFit];
    }

    return self;
}

Modifica: leggi anche la risposta di Erik B di seguito. Il mio codice mostra l'effetto, ma il suo codice offre un modo più semplice per inserirlo in un controller di visualizzazione esistente.


2
Se si imposta la cornice dell'etichetta sulla dimensione del suo testo utilizzando sizeWithFont:, assumerà magicamente il comportamento di allineamento automatico dell'etichetta standard.
Grahamparks,

1
Ma se usi sizeToFit, perderai il troncamento automatico.
Steven Fisher,

3
NOTA: questo è il vecchio modo di impostare il titolo personalizzato, suggerisco di leggere la risposta di Erik B.
Elia Palme,

1
Confermato che sizeToFit funziona, quindi risposta aggiornata. Inoltre, ho aggiunto una nota per leggere la risposta di Erik B.
Steven Fisher,

1
label.textAlignment = UITextAlignmentCenter è stato deprecato da iOS6.0, utilizzare invece NSTextAlignmentCenter
Jasper

226

So che questo è un thread piuttosto vecchio, ma penso che sarebbe utile sapere per i nuovi utenti che iOS 5 porta una nuova proprietà per stabilire le proprietà del titolo.

Puoi usare UINavigationBar's setTitleTextAttributesper impostare il carattere, il colore, l'offset e il colore dell'ombra.

Inoltre, puoi impostare gli stessi attributi di testo del titolo UINavigationBar predefiniti per tutto il UINavigationBarsresto dell'applicazione.

Ad esempio in questo modo:

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [UIColor whiteColor],UITextAttributeTextColor, 
                                            [UIColor blackColor], UITextAttributeTextShadowColor, 
                                            [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

11
'UITextAttributeTextColor' è obsoleto in iOS 7. La chiave di iOS 7 è 'NSForegroundColorAttributeName'
Keller

1
Nota che questo cambierà TUTTE le barre di navigazione, che di solito è ciò che vorresti comunque.
Ash,

1
Si prega di contrassegnare questa come la risposta corretta - il metodo UILabel sopra non è necessario con questi metodi disponibili.
Mic Fok,

180

In iOS 5 puoi cambiare il colore del titolo navigationBar in questo modo:

navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

8
@BartSimpson Sono d'accordo! Per iOS 7, aggiorna UITextAttributeTextColora NSForegroundColorAttributeName. Funziona come un fascino!
John Erck,

QUESTO FUNZIONA! quello che voglio capire è come ?! titleTextAttributes esclude un dizionario con un set predefinito di chiavi menzionato in "Chiavi per dizionari di attributi di testo" menzionato in "Riferimento NSString UIKit Additions". Come prende la chiave che hai citato.
AceN

... e dal momento che funziona, come posso ottenere la tinta 'predefinita'?
AceN

L'impostazione self.navigationController.navigationBar.tintColornon ha funzionato per me. Questo ha fatto.
JRam13

127

Sulla base della risposta di Steven Fisher, ho scritto questo codice:

- (void)setTitle:(NSString *)title
{
    [super setTitle:title];
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor yellowColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

Il vantaggio di questo codice, oltre a gestire correttamente il frame, è che se cambi il titolo del tuo controller anche la vista del titolo personalizzata verrà aggiornata. Non è necessario aggiornarlo manualmente.

Un altro grande vantaggio è che rende davvero semplice abilitare il colore del titolo personalizzato. Tutto quello che devi fare è aggiungere questo metodo al controller.


3
Sono d'accordo che questa sia definitivamente la soluzione migliore. Non c'è bisogno di usare sizeWithFont e mi piace l'idea di sovrascrivere il metodo setTitle.
Elia Palme,

@ Sr.Richie Non devi inserire il codice in un controller di navigazione personalizzato. Dovresti inserirlo in tutti i controller di visualizzazione in cui devi cambiare il colore del titolo. Probabilmente non vuoi nemmeno un controller di navigazione personalizzato.
Erik B,

Non funziona per me. Penso che sia perché ho usato il metodo [UINavigationBar aspetto] .. (non funziona perché l'etichetta titleView è sempre nulla)
Matej

1
Se utilizzi iOS5 o versioni successive, dovresti leggere la risposta meno in basso. C'è un one-liner che funziona bene e rimane sulla prenotazione.
Algal,

dobbiamo aggiungere self.title = @ "la nostra stringa"; in viewDidLoad.then funziona solo sopra il codice.
Hari1251,

40

La maggior parte dei suggerimenti precedenti sono ora obsoleti, per l'utilizzo di iOS 7 -

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                               [UIColor whiteColor],NSForegroundColorAttributeName, 
                               [UIColor whiteColor],NSBackgroundColorAttributeName,nil];

self.navigationController.navigationBar.titleTextAttributes = textAttributes;
self.title = @"Title of the Page";

Inoltre, controlla NSAttributedString.h per varie proprietà di testo che è possibile impostare.


38

In IOS 7 e 8, puoi cambiare il colore del titolo per dire verde

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor greenColor] forKey:NSForegroundColorAttributeName];

6
Swift:self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
Byron Coetsee,

@ByronCoetsee dopo l'aggiornamento a Swift 2 Ho il seguente errore: Impossibile assegnare un valore di tipo '[NSObject: AnyObject]' a un valore di tipo '[String: AnyObject]?'
Jorge Casariego,

2
Molto più facile in swift 2.0self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Kevin DiTraglia il

24

Per mantenere la domanda aggiornata, aggiungerò la soluzione Alex RR , ma in Swift :

self.navigationController.navigationBar.barTintColor = .blueColor()
self.navigationController.navigationBar.tintColor = .whiteColor()
self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.whiteColor()
]

Che risulta a:

inserisci qui la descrizione dell'immagine


Hmmm, forse non funziona per Swift 2.0. Fammi ricontrollare. Non c'è bisogno di aggressività però.
Michal,

Scusa Michal, lo stavo pensando come uno scherzo! Non come qualcosa di aggressivo! Ciò che ha funzionato per me è stato più simile a questo: self.navigationController! .NavigationBar.titleTextAttributes = NSDictionary (oggetto: UIColor.whiteColor (), forKey: NSForegroundColorAttributeName) come [NSObject: AnyObject]
Radu

Aggiungi questa riga seguente: UINavigationBar.appearance (). BarStyle = UIBarStyle.Black Prima di questa riga: UINavigationBar.appearance (). TintColor = UIColor.whiteColor () Per far funzionare tintColor!
triiiiista,

2
In Swift 4.0: self.navigationController? .NavigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
Abhi Muktheeswarar

14

Metodo 1 , impostalo in IB:

inserisci qui la descrizione dell'immagine

Metodo 2 , una riga di codice:

navigationController?.navigationBar.barTintColor = UIColor.blackColor()

il metodo 2 non funziona. Funziona titleTextAttributessolo con
Vyachaslav Gerchicov

13

La soluzione di tewha funziona bene se stai cercando di cambiare il colore in una pagina, ma voglio essere in grado di cambiare il colore in ogni pagina. Ho apportato alcune piccole modifiche in modo che funzionasse per tutte le pagine su aUINavigationController

NavigationDelegate.h

//This will change the color of the navigation bar
#import <Foundation/Foundation.h>
@interface NavigationDelegate : NSObject<UINavigationControllerDelegate> {
}
@end

NavigationDelegate.m

#import "NavigationDelegate.h"
@implementation NavigationDelegate

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    CGRect frame = CGRectMake(0, 0, 200, 44);//TODO: Can we get the size of the text?
    UILabel* label = [[[UILabel alloc] initWithFrame:frame] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    //The two lines below are the only ones that have changed
    label.text=viewController.title;
    viewController.navigationItem.titleView = label;
}
@end

13

Da iOS 5 in poi dobbiamo impostare il colore del testo del titolo e il carattere della barra di navigazione usando titleTextAttribute Dictionary (dizionario predefinito nel riferimento di classe del controller UInavigation).

 [[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor blackColor],UITextAttributeTextColor, 
[UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];

13

Versione rapida

Ho trovato che molti di voi hanno presentato le risposte della versione Objective_C

Vorrei implementare questa funzione utilizzando Swift per chiunque ne abbia bisogno.

In ViewDidload

1.Per rendere lo sfondo di NavigationBar diventa colore (ad esempio: BLU)

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

2.Per rendere lo sfondo di NavigationBar diventa immagine (ad esempio: ABC.png)

let barMetrix = UIBarMetrics(rawValue: 0)!

self.navigationController?.navigationBar
      .setBackgroundImage(UIImage(named: "ABC"), forBarMetrics: barMetrix)

3.Per modificare il titolo di NavigationBar (ad esempio: [Carattere: Futura, 10] [Colore: Rosso])

navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName : UIColor.redColor(),
            NSFontAttributeName : UIFont(name: "Futura", size: 10)!
        ]

(suggerimento 1: non dimenticare il segno "!" dopo UIFont)

(suggerimento2: ci sono molti attributi del testo del titolo, comando clic su "NSFontAttributeName" è possibile inserire la classe e visualizzare keyNames e i tipi di oggetti richiesti)

Spero di poterti aiutare!: D


10

Utilizzare il codice seguente in qualsiasi vista viewDidLoad o viewWillAppear del controller di visualizzazione.

- (void)viewDidLoad
{
    [super viewDidLoad];

    //I am using UIColor yellowColor for an example but you can use whatever color you like   
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

    //change the title here to whatever you like
    self.title = @"Home";
    // Do any additional setup after loading the view.
}

9

Breve e dolce

[[[self navigationController] navigationBar] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];

8

Questa è la mia soluzione basata su Stevens

L'unica vera differenza è che ho messo un po 'di gestione per regolare la posizione se, a seconda della lunghezza del testo, sembra essere simile a come lo fa Apple

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

Potresti voler regolare il valore 10 in base alla dimensione del carattere


6

Ho riscontrato un problema con i miei pulsanti di navigazione che hanno lanciato il testo fuori dal centro (quando hai solo un pulsante). Per risolvere il problema, ho appena cambiato le dimensioni del mio frame in questo modo:

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);

6

Ho personalizzato l'immagine di sfondo della barra di navigazione e l'elemento del pulsante sinistro e il titolo grigio non si adatta allo sfondo. Quindi uso:

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

per cambiare il colore della tinta in grigio. E il titolo è bianco ora! È quello che voglio.

Spero di aiutare anche :)


Bello ma funziona solo per cambiare il testo in bianco. Anche la colorazione della barra di navigazione con [UIColor whiteColor] cambia il colore del testo in bianco.
cschuff,

6

Si consiglia di impostare self.title poiché viene utilizzato mentre si spinge la barra di navigazione del bambino o si mostra il titolo sulla barra delle schede.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    }
}

6

Questo è un thread piuttosto vecchio, ma penso di fornire una risposta per l'impostazione di Colore, Dimensione e Posizione verticale del titolo della barra di navigazione per iOS 7 e versioni successive

Per colore e dimensioni

 NSDictionary *titleAttributes =@{
                                NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
                                NSForegroundColorAttributeName : [UIColor whiteColor]
                                };

Per la posizione verticale

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10.0 forBarMetrics:UIBarMetricsDefault];

Imposta titolo e assegna il dizionario degli attributi

[[self navigationItem] setTitle:@"CLUBHOUSE"];
self.navigationController.navigationBar.titleTextAttributes = titleAttributes;

5

Questo funziona per me in Swift:

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white]

Abbastanza vicino ma la cosa è la tua strada sovrascriverà tutti i possibili attributi già sul titolo. Nel mio caso quello era il carattere. Il codice con cui sono finito è statonavigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
Matic Oblak,

Funziona bene. Lo stesso per Obj-C:self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Mike Keskinov il

5

Versione Swift 4 e 4.2:

 self.navigationController.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]

4
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];

3

per impostare la dimensione del carattere del titolo ho usato le seguenti condizioni .. forse utile a chiunque

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;

3

Un aggiornamento al post di Alex RR che utilizza i nuovi attributi di testo iOS 7 e il moderno obiettivo c per ridurre il rumore:

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow};

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

3

Credo che il modo corretto di impostare il colore di UINavigationBarsia:

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

Il codice sopra è scritto sottoclasse su UINavigationBar, ovviamente funziona anche senza sottoclasse.


Corretto, ma solo iOS 5. È passato abbastanza tempo dalla versione di iOS 5 che è una buona soluzione. E dal momento che siamo nel mondo di iOS 5, vale la pena notare che è possibile utilizzare [UINavigationBar appearance]e impostare gli attributi del testo del titolo lì (considerando l'inganno implicato nella sottoclasse UINavigationBar, una soluzione preferibile).
Ivan Vučica,

@stringCode. Puoi inizializzare il codice sopra senza "self.navigationController.navigationBar.titleTextAttributes = attributi;"?
Gajendra K Chauhan,

3

Utilizzare in questo modo per il supporto dell'orientamento

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];

2

Questa è una di quelle cose che mancano. La soluzione migliore è creare la tua barra di navigazione personalizzata, aggiungere una casella di testo e manipolare il colore in quel modo.


Sto seguendo la tua idea :) quale metodo dovrei ignorare per iniziare a giocare con il titolo? Scusa, sono davvero un n00b :(
Sr.Richie,

2

Dopo aver riscontrato lo stesso problema (come altri) dell'etichetta che si sposta quando inseriamo un pulsante nella barra di navigazione (nel mio caso ho uno spinner che sostituisco con un pulsante quando viene caricata la data), le soluzioni di cui sopra non hanno funzionato per me, quindi ecco cosa ha funzionato e mantenuto l'etichetta sempre nello stesso posto:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;

1

Dovresti chiamare [label sizeToFit]; dopo aver impostato il testo per evitare strani offset quando l'etichetta viene riposizionata automaticamente nella vista del titolo quando altri pulsanti occupano la barra di navigazione.


1

Può usare questo metodo nel file appdelegate e può usare in ogni vista

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}

1

titleTextAttributes Visualizza gli attributi per il testo del titolo della barra.

@property (non anatomico, copia) NSDictionary * titleTextAttributes Discussione Puoi specificare il carattere, il colore del testo, il colore dell'ombra del testo e l'offset dell'ombra del testo per il titolo nel dizionario degli attributi del testo, usando le chiavi degli attributi del testo descritte in NSString UIKit Additions Reference.

Disponibilità Disponibile in iOS 5.0 e versioni successive. Dichiarato in UINavigationBar.h

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.