Фоновое изображение для UINavigationBar - PullRequest
3 голосов
/ 22 февраля 2012

Я пытаюсь установить фоновое изображение для UINavigationBar.

Я пробовал 2 типа методов,

 1. [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"KnavigationBarImage.png"] forBarMetrics:UIBarMetricsDefault];

Поддерживается в ios 5, но вылетает при запуске в ios 4.3.

 2. self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"KnavigationBarImage.png"].CGImage;

В ios 4 работает нормально, но изображение не отображается в ios 5. Simulator.

Мне нужен код, который должен работать как в версии 4, так и в 5.

Пожалуйста, предложите мне.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012

В одном из моих приложений я использую это, чтобы установить изображение панели навигации для всего приложения. Поместите поверх вашего файла appdelegate. Работает в iOS 4.3 и 5.0.

//custom navbar
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect
{
    UIImage *image = [UIImage imageNamed: @"NavBarLogo.png"];
    [image drawInRect:CGRectMake(0, -1, self.frame.size.width, self.frame.size.height + 5)];
}
@end
3 голосов
/ 22 февраля 2012

Напишите метод, подобный этому, чтобы узнать, какую ОС имеет устройство.

static int sIsiOS5 = -1;
+(BOOL)isIOS5
{
    if( -1 == sIsiOS5)
    {
        sIsiOS5 = 0;
        if( [[UIScreen mainScreen] respondsToSelector:@selector(brightness)])
        {
            sIsiOS5 = 1;
        }
    }
    return sIsiOS5;
}

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

if ( [Utilities isIOS5] ) {
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"KnavigationBarImage.png"] forBarMetrics:UIBarMetricsDefault];
}
else
{
    self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"KnavigationBarImage.png"].CGImage;
}
0 голосов
/ 27 марта 2012

http://caydenliew.com/2011/12/customizing-uinavigationbar/

вот как это сделать ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...