UINavigationBar的背景图片

时间:2012-02-22 04:54:45

标签: ios uinavigationbar

我正在尝试为UINavigationBar设置背景图片。

我尝试了两种方法,

 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和版本。

请建议我。

感谢。

3 个答案:

答案 0 :(得分:3)

编写这样的方法来查找设备所具有的操作系​​统。

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;
}

答案 1 :(得分:3)

在我的某个应用中,我使用此功能为整个应用设置导航栏图像。放入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

答案 2 :(得分:0)