Изменение фонового изображения UINavigationBar по умолчанию — iOS 4.3

Я меняю фоновое изображение UINavigationBar с помощью перегруженного метода

@implementation UINavigationBar (Background)
-(void) drawRect:(CGRect)rect
{
    UIImage *image = [UIImage imageNamed:@"Header.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

Но в некоторых UIViewControllers мне нужно удалить это фоновое изображение. Как я могу это сделать?


person Timur Mustafaev    schedule 15.04.2012    source источник
comment
Вы подклассифицируете UINavigationBar?   -  person Otium    schedule 15.04.2012


Ответы (2)


Вы можете посмотреть эту запись в блоге Себастьяна Селиса. Это решает именно ту проблему, с которой вы столкнулись.

И, возможно, также проверьте это.

person Jonas Schnelli    schedule 15.04.2012
comment
Нет, он объясняет, как реализовать подкласс UINavigationBar и как изменить изображения UINavigationBar в ландшафтном режиме и режимах по умолчанию. Я знаю, как это сделать. Мне нужно вернуть UINavigationBar в UIBarStyleDefault. Простой метод: self.navigationController.navigationBar.barStyle = UIBarStyleDefault; не помогает - person Timur Mustafaev; 15.04.2012
comment
Вам нужно создать подкласс UINavigationBar, а не создавать его категорию - person Otium; 15.04.2012

тестировать таким образом

+ (void)setNavigationbarBackground:(UINavigationBar *)nBar imageName:(NSString *)imgName {
    if([nBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) {
        [nBar setBackgroundImage:[UIImage imageNamed:imgName] forBarMetrics:UIBarMetricsDefault];
    } else {
        [nBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:imgName]]];
    }
}
person WhiteTiger    schedule 15.04.2012
comment
Я знаю, как настроить панель навигации. Мне нужно отменить это действие - person Timur Mustafaev; 15.04.2012
comment
тест таким образом, работает для меня. [nBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; - person WhiteTiger; 15.04.2012
comment
это для iOS 5 :) Мне нужна iOS 4.x - person Timur Mustafaev; 15.04.2012