Современный подход
Современный способ, в течение всего навигационного контроллера ... сделать это один раз, когда вид корня вашего навигационного контроллера загружается.
[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для старших SDKs).
Установите цвет текста этикетки быть любой другой цвет вы хотите. Вы действительно хотите цвет, который не вызывает текст, чтобы смешаться в тень, что было бы трудно читать.
Я работал на это путем проб и ошибок, но значения я придумал, в конечном счете слишком просто для них, чтобы не быть, что Apple, выбрал. :)
Если вы хотите , чтобы убедиться в этом, отказаться от этого кода в initWithNibName:bundle:ин PageThreeViewController.mиз образца NavBar компании Apple . Это заменит текст с желтой этикеткой. Это должно быть неотличимо от оригинала , полученного с помощью кода 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;
}
Edit: Кроме того, прочитайте ответ Эрика Б ниже. Мой код показывает эффект, но его код предлагает более простой способ отказаться от этого на место на существующем контроллере представления.