6

我正在整合 iOS 5 的 UIAppearance 功能,为我的通用应用程序提供一个独特的主题。目前,我已经在我的 App Delegate 中实现了一些代码来为应用提供自定义导航栏:

UIImage *navBarImage = [[UIImage imageNamed:@"navigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];

这很好用,并将所有导航栏从 Apple 的普通样式更改为明亮的渐变。但是,我遇到的问题是它覆盖了一些我也不想要的样式。我的特殊问题是它覆盖了 iPad 的 UIPopoverController 中的导航栏背景,造成了丑陋的用户体验。请告诉我如何解决它。

编辑:请注意,这是一个通用应用程序,我通过 iPad 上的 UIPopoverController 和 iPhone/iPod 上的模式视图打开图像选择器。我只想删除 iPad 弹出框上导航栏的自定义背景,而不是模式视图上的自定义背景。

它目前的样子: 在此处输入图像描述

我希望它看起来如何: 在此处输入图像描述

提前感谢您的帮助,古维

4

1 回答 1

14

+appearanceWhenContainedIn:当导航栏包含在弹出框控制器中时,尝试使用该方法从导航栏中删除背景图像自定义。像这样的东西:

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

从文档中不清楚是否设置导航栏的背景图像以nil恢复其默认外观 - 如果这不起作用,您可能必须采取相反的方法,并提供您正在使用的非弹出容器视图控制器的列表到+appearanceWhenContainedIn:.

于 2012-07-04T18:53:45.643 回答