изменить цвет фона элемента навигации (панели)

Есть ли простой способ изменить цвет фона элемента навигации в верхней части представления? У меня есть приложение на основе навигации, и я хочу, чтобы только один вид получил другой цвет фона. Я создал взгляды в основном с 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 (но без одинакового цвета в каждом представлении)?

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

Cheers

7
задан testing 25 August 2010 в 16:54
поделиться

2 ответа

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

[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

Затем в Interface Builder установите свой класс UINavigationBar на (в данном случае) CustomNavigationBar на вкладке «Идентификация».

18
ответ дан 6 December 2019 в 07:05
поделиться

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

1
ответ дан 6 December 2019 в 07:05
поделиться