переопределение функции drawRect UINavigationBar не работает - PullRequest
0 голосов
/ 24 июля 2011

У меня есть простое приложение с контроллером панели навигации, и я хотел бы изменить его панель навигации, переопределяя функцию drawRect. Во многих местах я читал, что все, что мне нужно сделать, это просто вставить приведенный ниже код над моим appDelegate. К сожалению, это ничего не делает для меня. Сначала я попытался изменить цвет навигационной панели, прежде чем добавить к ней изображение, но опять ничего не происходит. Что мне здесь не хватает

Я устал вставлять этот код над AppDelegate:

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect {
 UIColor *color = [UIColor redColor];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
CGContextFillRect(context, rect);
  }
 @end

И с фоновым изображением:

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect {
// Drawing code 
UIImage *img = [UIImage imageNamed: @"13.png"];
[img drawInRect:CGRectMake(0, 0, 320, self.frame.size.height)];    
}
@end

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 24 июля 2011

Этот код объявляет категорию для UINavigationBar и переопределяет поведение его метода drawRect:. Попробуйте поместить фрагмент кода (второй) в конец файла .m делегата приложения.

Хотя первый должен работать, другой более чистый вариант - записать категорию в отдельный файл, который вы включите в делегат приложения.

Также убедитесь, что загружаемая картинка существует в комплекте приложений.

0 голосов
/ 24 июля 2011

ОК - решение найдено! Кажется, это не работает на симуляторе iPhone 5.0!

...