Добавление фонового изображения в UINavigationBar - PullRequest
0 голосов
/ 22 июля 2010

Есть ли способ добавить изображение на фоне UINavigationBar. Прямой опции через конструктор интерфейса нет, но я видел, как приложения реализовали эту вещь.

Любая помощь будет оценена.

Спасибо

Ответы [ 6 ]

2 голосов
/ 16 марта 2013

Используйте этот код

        UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
        [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

это будет работать.

2 голосов
/ 22 июля 2010

Создайте UIView и добавьте его в качестве подпредставления.

Редактировать: теперь вы можете использовать setBackgroundImage:forBarMetrics:. Источник: https://stackoverflow.com/a/7765102/313875

0 голосов
/ 25 апреля 2011

Недавно я написал статью о настройке фона для UINavigatioBar и UIToolbar.Вы можете найти пример кода и категории для бесшовной интеграции этой функции в вашем приложении, перейдя по ссылке - http://leonov.co/2011/04/uinavigationbar-and-uitoolbar-customization-ultimate-solution/

0 голосов
/ 13 февраля 2011

Вы также можете переопределить метод drawLayer: inContext: в классе категории UINavigationBar. Внутри метода drawLayer: inContext: вы можете нарисовать фоновое изображение, которое хотите использовать. Вы также можете использовать изображения разных размеров для портретной и альбомной ориентации, если хотите.

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
    if ([self isMemberOfClass:[UINavigationBar class]] == NO) {
        return;
    }

    UIImage *image = (self.frame.size.width > 320) ?
                        [UINavigationBar bgImageLandscape] : [UINavigationBar bgImagePortrait];
    CGContextClip(context);
    CGContextTranslateCTM(context, 0, image.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextDrawImage(context, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage);
}

И как полный демонстрационный проект Xcode по настройке внешнего вида UINavigationBar , это и , это может быть полезным.

0 голосов
/ 22 июля 2010

Вы также можете переопределить функцию drawRect.

@implementation UINavigationBar (UINavigationBarCustom)

- (void)drawRect:(CGRect)rect {

    UIImage *image = [UIImage imageNamed:@"nav_bar_logo.png"];
    [image drawInRect:rect];
}

@end
0 голосов
/ 22 июля 2010

Просто добавьте свой фон в качестве подпредставления, как предложил jrtc27, и измените цвет оттенка в соответствии с вашими потребностями.

...