изменить цвет панели навигации - PullRequest
3 голосов
/ 03 июня 2009

Как изменить цвет панели навигации по умолчанию на синий цвет?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 03 июля 2011

Предполагая, что вы добавили панель навигации программно, а не в Интерфейсном Разработчике, просто поместите это в метод viewDidLoad.

self.navigationController.navigationBar.tintColor = [UIColor grayColor];
4 голосов
/ 03 июня 2009

Класс UINavigationBar имеет свойство UIColor *tintColor, которое можно изменить в коде.

В качестве альтернативы это свойство также доступно в средстве дизайна интерфейса InterfaceBuilder.

0 голосов
/ 15 сентября 2013

Свойство TintColor не влияет на подпредставление панели навигации по умолчанию в виде нижней границы и тени. Иногда бывает полезно вообще переопределить расположение панели навигации.

Несмотря на то, что navigationBar - это свойство только для чтения для UINavigationController, вы можете избежать это ограничение "setValue: forKey:". Этот метод был одобрен для 5 приложений, успешно отправленных в AppStore.

Вы можете создать подкласс UINavigationBar и изменить drawRect: метод по своему усмотрению. Например,

@implementation CustomNavigationBar

- (void) drawRect:(CGRect)rect
{
    [super drawRect:rect];
    UIImage *backgroundImage = ImageFromColor(WANTED_COLOR);
    [backgroundImage drawInRect:rect];
}

После того, как вы можете создать подкласс UINavigationController и изменить initWithRootViewController:

- (id) initWithRootViewController:(UIViewController *)rootViewController
{
    self = [super initWithRootViewController:rootViewController]; 
    if (self) 
    {
        CustomNavigationBar *navBar = [CustomNavigationBar new];
        [self setValue:navBar forKey:@"navigationBar"];
    }
    return self;
}

Также вы можете изменить этот подход, создав Category для UINavigationController и реализовав метод swizzling для initWithRootViewController:

P.S. Вчера мое новое приложение появилось в AppStore без каких-либо проблем с этим подходом.

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