用不同的图像更改 3 导航栏背景

发布于 2024-10-05 13:19:07 字数 787 浏览 1 评论 0原文

我有 3 个导航控制器,我想使用不同的图像更改每个背景。我实现了一个扩展 UINavigationBar 的类别,如下所示:

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

@end

但它使每个导航栏都有相同的背景图像。然后我尝试在每个控制器中实现这样的代码:

- (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];

}

但每个背景只显示tintColor,而不是图像......我应该做什么???

如果我也想在 tabbarController 中这样做怎么办?

i have 3 navigation controller and i want to change each background using different image. I was implement a category that extends UINavigationBar like this :

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

@end

but it make every navigation bar have a same background image. And then i try to implement code like this :

- (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];

}

in every controller but each background just show the tintColor, not the image...what should I do???

and how if i want to do that too in tabbarController??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

欢烬 2024-10-12 13:19:07

在每个视图上,在 viewWillAppear: 方法中实现以下内容

#import <QuartzCore/QuartzCore.h>
...

- (void)viewWillAppear:(BOOL)animated 
{
     self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"yourImageBgHere"].CGImage;
}

干杯,
罗格

On each of your views, implement the following in your viewWillAppear: method

#import <QuartzCore/QuartzCore.h>
...

- (void)viewWillAppear:(BOOL)animated 
{
     self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"yourImageBgHere"].CGImage;
}

Cheers,
Rog

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文