UINavigationBar - Настройка фонового изображения? - PullRequest
1 голос
/ 16 февраля 2012

Итак, у меня есть категория для UINavigationController, и я переопределяю метод init, как показано ниже:

- (id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
            UIImage *image = [UIImage imageNamed:@"navBar.png"];
            [[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];      
    }

        return self;
}

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

1 Ответ

4 голосов
/ 16 февраля 2012

Если вы используете iOS4, вы можете переопределить - (void) drawRect

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect
{
    UIImage *navBg = [UIImage imageNamed:@"navBar.png"];
    [navBg drawInRect:rect];
}
@end

iOS 5,

if ([[UIDevice currentDevice].systemVersion floatValue] >= 5.0) {
    if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){

        UIImage *navBarImg = [UIImage imageNamed:@"navBar.png"];

        [self.navigationController.navigationBar setBackgroundImage:navBarImg forBarMetrics:UIBarMetricsDefault];

    }
}
...