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

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

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

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

Ответы [ 32 ]

0 голосов
/ 12 июля 2016

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

self.navigationItem.title = @"MY NAV TITLE";
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                       [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                       shadow, NSShadowAttributeName,
                                                       [UIFont fontWithName:@"HelveticaNeue-Light" size:21.0], NSFontAttributeName, nil]];

Да поможет вам это.

Спасибо

0 голосов
/ 31 декабря 2012

Чтобы сделать отличное решение Эрика Б более удобным для разных UIVIewCOntrollers вашего приложения, я рекомендую добавить категорию для UIViewController и объявить его метод setTitle: title внутри. Таким образом, вы получите изменение цвета заголовка на всех контроллерах представления без необходимости дублирования.

Следует отметить, что вам не нужно [super setTItle: tilte]; в коде Эрика, и что вам нужно будет явно вызвать self.title = @ "my new title" в ваших контроллерах представления для вызова этого метода

@implementation UIViewController (CustomeTitleColor)

- (void)setTitle:(NSString *)title
{
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor blueColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

@ конец

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