1

我在我的 appdelegate 中设置了一个自定义导航栏。你可以在这里看到代码。

UIImage *image = [UIImage imageNamed:@"navbar.png"];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

但现在我正在使用 eventkit 框架。我想要的是当我去事件详细信息时,我得到标准的导航栏布局。所以没有图像。

EKEventViewController *vc = [[EKEventViewController alloc] init];
[vc.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
vc.event = [dataSource eventAtIndexPath:indexPath];
vc.allowsEditing = YES;
[calendar.navigationController pushViewController:vc animated:YES];

我尝试了以下方法,但它不起作用。有什么帮助吗?

4

1 回答 1

1

你可以做一件事,用默认导航栏截取一个视​​图控制器,只裁剪导航栏区域,即制作 320 x 44 大小的图像。

当您再次需要默认导航栏时,使用此裁剪图像作为导航栏的背景,添加以下代码

UIImage *image = [UIImage imageNamed:@"defaultNavbar.png"];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

当您导航到另一个具有自定义 Navimage 的视图控制器时,再次借助您的自定义图像代码绘制导航图像,即

UIImage *image = [UIImage imageNamed:@"navbar.png"];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
于 2013-02-11T17:25:06.767 回答