Есть ли простой способ изменить цвет фона элемента навигации в верхней части представления? У меня есть приложение на основе навигации, и я хочу, чтобы только один вид получил другой цвет фона. Я создал взгляды в основном с 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
Вы можете использовать:
[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
на вкладке «Идентификация».
Вы можете использовать navigationController.navigationBar.tintColor;