使用我自己的图像更改导航栏背景

时间:2010-11-23 09:24:57

标签: iphone background uinavigationbar uisplitviewcontroller

我想用我自己的图像更改导航栏背景,但我真的不知道该怎么做。我在谷歌搜索它,但一些样本告诉导航栏模板。我的应用程序是一个拆分视图库。我怎么能那样做?

4 个答案:

答案 0 :(得分:4)

如果您想在不使用类别的情况下更改导航栏的背景,这可能有助于提供这种感觉,看看它是否满足您的需求:

- (void)viewDidLoad {
    [super viewDidLoad];

        UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
        //here for v, width= navBar width and height=navBar height

    [v setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"a.png"]]];

    [self.view addSubview:v];

    [v release];

    [self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];

    [self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
}

答案 1 :(得分:2)

#import "ImageViewController.h"

@implementation UINavigationBar (CustomImage)

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

@end
implement this code in your .m file


@implementation ImageViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
    UIImageView *backGroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
    [self.navigationController.navigationBar insertSubview:backGroundView atIndex:0];
    [backGroundView release];
}

@end

答案 2 :(得分:2)

您可以使用下面的代码直接在导航栏背景中添加图像

[navigation_bar setBackgroundImage:[UIImage imageNamed:@"image.jpg"] forBarMetrics:UIBarMetricsDefault];

答案 3 :(得分:0)

要将背景图像添加到UINavigationBar,您需要创建一个扩展UINavigationBar的类别。只需找到下面给出的代码并将其添加到您的实现文件中。

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

实施之后..您可以在应用程序中的任何位置调用它,您可以在每个视图上看到更改。不要忘记将图像添加到资源文件夹中。