изменить цвет фона элемента навигации (панель) - PullRequest
7 голосов
/ 25 августа 2010

Есть ли простой способ изменить цвет фона элемента навигации в верхней части представления?У меня есть приложение на основе навигации, и я хочу, чтобы только один вид получил другой цвет фона.Я создал взгляды в основном с IB.Я нашел следующее решение (не тестировалось):

float r=10;
float g=55;
float b=130;
float a=0;

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 120, 30)];
[label setBackgroundColor:[UIColor colorWithRed:r/255.f
                                          green:g/255.f
                                           blue:b/255.f    
                                          alpha:a/255.f];];
[self.navigationController.navigationBar.topItem setTitleView:label];
[label release];

Есть ли более простой способ, например

[navigationController.navigationBar setBackgroundColor:blueColor]

Или я могу сделать это с IB (но без одинакового цвета в каждомпосмотреть)?

Заранее большое спасибо!

Ура

Ответы [ 5 ]

18 голосов
/ 25 августа 2010

Вы можете использовать:

[navigationController.navigationBar setTintColor:[UIColor redColor]; //Red as an example.

Это подкрасит цвет панели навигации и всех ее кнопок в определенный цвет, в данном случае красный. Это свойство также можно установить в Интерфейсном Разработчике.

И если вы хотите настроить его дальше, вы можете установить фон UINavigationBar для изображения путем его подклассификации. Вот так…

Заголовочный файл.

#import <UIKit/UIKit.h>

@interface UINavigationBar (CustomImage)

@end

Файл реализации.

#import "CustomNavigationBar.h"

@implementation UINavigationBar (CustomImage)

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

{
    if([self isMemberOfClass: [UINavigationBar class]]){
        UIImage *image = [UIImage imageNamed:@"bar.png"];
        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 drawLayer:layer inContext:ctx];
    }

}

@end

Затем в Интерфейсном Разработчике установите класс UINavigationBar (в данном случае) CustomNavigationBar на вкладке «Идентичность».

3 голосов
/ 24 марта 2016

Попробуйте это в Интерфейсном Разработчике на вашем UINavigationController .

enter image description here

2 голосов
/ 02 ноября 2012

[[Внешний вид UINavigationBar] setTintColor: [UIColor colorWithRed: 107.0 / 256.0 зеленый: 145.0 / 256.0 синий: 35.0 / 256.0 alpha: 1.0]]; Изменит цвет панели навигации всего приложения.

Просто поместите его в метод didFinishLauncing в Appdelegate.

1 голос
/ 22 октября 2012

@ jerry

оттенок цвета не поддерживается для координат RGB

1 голос
/ 25 августа 2010

Вы можете использовать navigationController.navigationBar.tintColor;

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