Как изменить цвет UINavigationBar? - PullRequest
       0

Как изменить цвет UINavigationBar?

2 голосов
/ 09 февраля 2012

Я хочу изменить цвет UINavigationBar, цвет будет взят из изображения.

Ответы [ 5 ]

6 голосов
/ 09 февраля 2012

попробуйте установить объекты в качестве подпредставлений для панели навигации.

Установите свойство цвета оттенка или используйте изображения

UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:rootController]; 
controller.navigationBar.tintColor = [UIColor blackColor];
2 голосов
/ 27 июня 2014

В iOS 7 или более поздней версии попробуйте следующее:

navigationBar.barTintColor = [UIColor redColor];
1 голос
/ 09 февраля 2012

Если вы поддерживаете только iOS5 и более поздние версии, вы можете использовать «внешний прокси». Есть хороший учебник для этого .

Если вам нужно поддерживать предыдущие версии, вы должны создать подкласс UINavigationBar и переопределить его drawRect метод. хороший пример кода для этого .

0 голосов
/ 12 августа 2015

Есть способ сделать это из раскадровки в xcode 6.4.

Из структуры документа выберите панель навигации
image

Чем оттенок полосы изменения инспектора атрибутов
image

Вы также можете выбрать другой, и это принесет палитру цветов
image

Выберите пипетку, и это позволит вам выбрать цвет из изображения
image

0 голосов
/ 09 февраля 2012

Попробуйте:

  1. Сначала создайте класс Objective C, скажем, CustomNavBar унаследованный UINavigationBar класс ...
  2. , затем импортируйте этот класс в appDelegate ...
  3. , затем поместите этот код ниже в конец класса appDelegate ...
  4. , затем откройте MainWindow.xib и измените UINavigationBar class to CustomNavBar`.

Код:

@implementation CustomNavBar (CustomNavBarCategory)

-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 
{

    if([self isMemberOfClass:[CustomNavBar class]])
    {
        UIImage *image;

        image=[UIImage imageNamed:@"ImageName"];

        CGContextClip(ctx);
        CGContextTranslateCTM(ctx, 0, image.size.height);
        CGContextScaleCTM(ctx, 1.0, -1.0);
        CGContextDrawImage(ctx,CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage); 

    }
    else 
    {        
        [super.layer drawLayer:layer inContext:ctx];     
    }

}  

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