UIAppearance为UIPopoverController删除自定义NavBar背景

Gav*_*avy 6 xcode objective-c uipopovercontroller ios5 uiappearance

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

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

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

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

目前看起来如何: 在此输入图像描述

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

提前感谢您的帮助,Guvvy

Noa*_*oon 14

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

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

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

  • 将它设置为"nil"完成了这项工作.非常感谢你的帮助!我简直不敢相信自己没有想到这一点. (2认同)