2009-10-09 13 views

risposta

3

È possibile assegnare qualsiasi vista UIV all'area del titolo di un controllore di navigazione.

Creare un UILabel e impostare il font e la dimensione in ogni caso, quindi assegnarlo alla proprietà navigationItem.titleView di UIViewController. Assicurati che backgroundColor di UILabel sia impostato su clearColor.

Questo funziona solo sulla vista di navigazione di livello superiore. Quando l'utente esegue il drill down nella gerarchia del controller di visualizzazione e viene visualizzato il pulsante "indietro", il titolo alternativo viene ignorato e viene visualizzata l'etichetta di testo normale.

+0

C'è un modo per impostare la dimensione del carattere ecc. Per le barre del titolo * drill-down *? – user141146

+0

I documenti ufficiali dicono che le titlistview drill-down vengono ignorate (presumibilmente perché vogliono che l'utente visualizzi il testo prima che compaia nel pulsante "Indietro" del livello successivo.) Ma puoi sempre provare a sovrascrivere viewDidLoad e ricorsivamente a scansionare la gerarchia della vista della barra di navigazione finché non trovi la UILabel giusta, quindi imposta il carattere su quella. – Ramin

17

il modo corretto per ridimensionare il testo del titolo di un navcontroller è quello di impostare la proprietà titleView del navigationItem

come questo (in viewDidLoad)

UILabel* tlabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 300, 40)]; 
     tlabel.text=self.navigationItem.title; 
    tlabel.textColor=[UIColor whiteColor]; 
    tlabel.backgroundColor =[UIColor clearColor]; 
    tlabel.adjustsFontSizeToFitWidth=YES; 
    self.navigationItem.titleView=tlabel; 
4

si consiglia di rilievo l'etichetta in modo che non sembra confusa e piatta:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect frame = CGRectMake(0, 0, 400, 44); 
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont boldSystemFontOfSize:18.0]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.text = self.navigationItem.title; 
    // emboss so that the label looks OK 
    [label setShadowColor:[UIColor darkGrayColor]]; 
    [label setShadowOffset:CGSizeMake(0, -0.5)]; 
    self.navigationItem.titleView = label; 
} 
+0

anche per aggiungere testoAllegato –

+0

Non so cosa sia FontHelper, così ho usato: 'label.font = [UIFont boldSystemFontOfSize: 18.0];' Questo sembra abbastanza vicino al font originale per il titolo della barra di navigazione. – Ginny

+0

@ Ginny - mi dispiace per quello, non mi sono accorto di aver lasciato una chiamata alla mia classe FontHelper! –

3

SE volete far funzionare tutto questo, sia su iPhone e iPad, e anche voler ottenere il titolo centrato quindi utilizzare il seguente codice.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UILabel* label=[[UILabel alloc] initWithFrame:CGRectMake(0,0, self.navigationItem.titleView.frame.size.width, 40)]; 
    label.text=self.navigationItem.title; 
    label.textColor=[UIColor whiteColor]; 
    label.backgroundColor =[UIColor clearColor]; 
    label.adjustsFontSizeToFitWidth=YES; 
    label.font = [AppHelper titleFont]; 
    label.textAlignment = NSTextAlignmentCenter; 
    self.navigationItem.titleView=label; 
} 
Problemi correlati