Pendekatan modern
Cara modern, untuk seluruh pengontrol navigasi ... lakukan ini satu kali, ketika tampilan root pengontrol navigasi Anda dimuat.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Namun, ini tampaknya tidak berpengaruh dalam pandangan selanjutnya.
Pendekatan klasik
Cara lama, per view controller (konstanta ini untuk iOS 6, tetapi jika ingin melakukannya per view controller pada tampilan iOS 7 Anda akan menginginkan pendekatan yang sama tetapi dengan konstanta yang berbeda):
Anda perlu menggunakan UILabel
sebagai titleView
dari navigationItem
.
Label harus:
- Memiliki warna latar belakang yang jelas (
label.backgroundColor = [UIColor clearColor]
).
- Gunakan font sistem 20pt yang tebal (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Punya bayangan hitam dengan 50% alpha (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Anda juga ingin mengatur perataan teks menjadi terpusat (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
untuk SDK yang lebih lama).
Atur warna teks label menjadi warna kustom apa pun yang Anda inginkan. Anda memang menginginkan warna yang tidak menyebabkan teks berbaur menjadi bayangan, yang akan sulit dibaca.
Saya mengerjakan ini melalui coba-coba, tetapi nilai-nilai yang saya hasilkan pada akhirnya terlalu sederhana bagi mereka untuk tidak menjadi apa yang Apple pilih. :)
Jika Anda ingin memverifikasi ini, drop kode ini ke initWithNibName:bundle:
dalam PageThreeViewController.m
dari Apple sampel NavBar . Ini akan mengganti teks dengan label kuning. Ini harus dibedakan dari yang asli yang diproduksi oleh kode Apple, kecuali untuk warna.
- (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;
}
Sunting: Juga, baca jawaban Erik B di bawah ini. Kode saya menunjukkan efeknya, tetapi kodenya menawarkan cara yang lebih sederhana untuk menempatkan ini pada pengontrol tampilan yang ada.