Современный подход
Современный способ для всего контроллера навигации ... сделать это один раз, когда загружен корневой вид вашего контроллера навигации.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Однако, это, похоже, не влияет на последующие представления.
Классический подход
Старый способ для каждого контроллера представления (эти константы для iOS 6, но если вы хотите сделать это для каждого контроллера представления в iOS 7, вам понадобится тот же подход, но с разными константами):
Вам необходимо использовать UILabel
в качестве titleView
из navigationItem
.
Метка должна:
- Четкий фоновый цвет (
label.backgroundColor = [UIColor clearColor]
).
- Использовать системный шрифт жирным шрифтом 20pt (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Имейте черную тень с 50% альфа (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Вы также захотите установить выравнивание текста по центру (
label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
для старых SDK).
Установите цвет текста ярлыка на любой другой цвет, который вы хотите. Вам нужен цвет, который не приводит к смешиванию текста с тенью, который будет трудно читать.
Я решил это методом проб и ошибок, но значения, которые я придумал, в конечном итоге слишком просты, чтобы Apple не выбрала их. :)
Если вы хотите проверить это, перетащите этот код в initWithNibName:bundle:
в PageThreeViewController.m
из образца Apple NavBar . Это заменит текст с желтой меткой. Это должно быть неотличимо от оригинала, созданного кодом Apple, за исключением цвета.
- (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;
}
Редактировать: Также прочитайте ответ Эрика Б. ниже. Мой код показывает эффект, но его код предлагает более простой способ установить это на существующий контроллер представления.