Цвет заголовка навигационной панели iPhone - PullRequest
279 голосов
/ 01 марта 2009

Кажется, что заголовок панели навигации iOS по умолчанию белый. Есть ли способ изменить его на другой цвет?

Мне известен подход navigationItem.titleView с использованием изображения. Поскольку мои дизайнерские навыки ограничены, и я не смог получить стандартный глянцевый, я предпочитаю менять цвет текста.

Любое понимание будет высоко ценится.

Ответы [ 32 ]

3 голосов
/ 17 января 2011

Используйте как это для поддержки ориентации

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];
3 голосов
/ 15 сентября 2011

чтобы установить размер шрифта заголовка, я использовал следующие условия .. может быть полезным для всех

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;
2 голосов
/ 30 октября 2014
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];
2 голосов
/ 15 апреля 2011

После столкновения с той же проблемой (как и у других) метки, которая перемещается, когда мы вставляем кнопку в navBar (в моем случае у меня есть спиннер, который я заменяю кнопкой при загрузке даты), вышеуказанные решения не работает для меня, так вот что работало и держало лейбл все время в одном и том же месте:

- (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
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;
2 голосов
/ 10 июля 2012

Я верю, что правильный способ установить цвет UINavigationBar:

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

Код выше написан подкласс на UINavigationBar, очевидно, работает без подклассов.

2 голосов
/ 23 июня 2018

Swift 4 версия:

self.navigationController.navigationBar.titleTextAttributes = [
        NSAttributedStringKey.foregroundColor: UIColor.green]
2 голосов
/ 01 марта 2009

Это одна из тех вещей, которые отсутствуют. Лучше всего создать собственную панель навигации, добавить текстовое поле и таким образом управлять цветом.

1 голос
/ 16 марта 2011

Вы должны вызвать [label sizeToFit]; после настройки текста, чтобы предотвратить странные смещения, когда метка автоматически перемещается в представлении заголовка, когда другие кнопки занимают панель навигации.

1 голос
/ 20 августа 2012

Может использовать этот метод в файле appdelegate и может использоваться при каждом просмотре

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}
1 голос
/ 07 октября 2012

titleTextAttributes Отобразить атрибуты для текста заголовка панели.

@ свойство (неатомное, копировать) NSDictionary * titleTextAttributes обсуждение Вы можете указать шрифт, цвет текста, цвет тени текста и смещение тени текста для заголовка в словаре текстовых атрибутов, используя ключи атрибутов текста, описанные в Справочнике по NSString UIKit.

Наличие Доступный в iOS 5.0 и позже. Объявлен в UINavigationBar.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...