abordarea modernă
Modul modern pentru intregul sistem de navigare ... face acest lucru o dată, atunci când este încărcat în vederea rădăcină controler de navigare.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Cu toate acestea, acest lucru nu pare să aibă un efect în vizualizările ulterioare.
abordarea clasică
Vechiul mod, pentru fiecare vizualizare controler (aceste constante sunt pentru iOS 6, dar dacă doriți să-l facă pentru fiecare vizualizare controler de pe iOS 7 aspectul veți dori aceeași abordare, dar cu diferite constante):
Trebuie să utilizați o UILabelca și titleViewDIRECTIVEI navigationItem.
Eticheta ar trebui:
- Au o culoare de fundal clar (
label.backgroundColor = [UIColor clearColor]).
- Utilizați fonturi de sistem 20pt bold (
label.font = [UIFont boldSystemFontOfSize: 20.0f]).
- Au o umbră de negru cu 50% alfa (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]).
- Veți dori să setați alinierea textului la centrat , precum și (
label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterpentru SDK - uri mai vechi).
Setați culoarea etichetei de text pentru a fi orice culoare personalizată pe care doriți. Tu vrei o culoare care nu provoacă textul să se amestece în umbră, ceea ce ar fi dificil de citit.
Am lucrat asta prin încercări și erori, dar valorile am venit cu sunt în cele din urmă prea simplu pentru ei să nu fie ceea ce Apple a ales. :)
Dacă doriți să verificați acest lucru, picătură acest cod în initWithNibName:bundle:în PageThreeViewController.mal probei NavBar Apple . Aceasta va înlocui textul cu o etichetă galbenă. Acest lucru ar trebui să fie imposibil de distins de original produs de cod Apple, cu excepția culorii.
- (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;
}
Editare: De asemenea, citiți răspunsul Erik B de mai jos. Codul meu arată efectul, dar codul său oferă un mod mai simplu să renunțe la acest lucru în loc pe un controler de vizualizare existent.