Современный подход
Современный способ для всего контроллера навигации ... сделать это один раз, когда загружен корневой вид вашего контроллера навигации.
[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;
}
Изменить: Кроме того, прочитайте ответ Эрика Б. ниже. Мой код показывает эффект, но его код предлагает более простой способ установить это на существующий контроллер представления.