仅在一个视图上更改导航栏

时间:2013-02-11 13:20:40

标签: iphone ios objective-c uinavigationcontroller

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

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

但现在我正在使用eventkit框架。我想要的是当我去eventdetails,我得到标准的导航栏布局。没有图像。

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

我尝试过以下但是没有用。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

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

如果您想再次使用默认导航栏,那么使用此裁剪图像作为导航栏的背景,添加以下代码

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

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

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