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