2012-07-04 12 views
6

Estoy en el proceso de incorporar la característica UIAppearance de iOS 5 para darle a mi aplicación universal un tema único. Actualmente, he implementado un cierto código en mi aplicación Delegado para dar las barras de navegación personalizados aplicación:UIAppearance Eliminar fondo de NavBar personalizado para UIPopoverController

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

Esto funciona bien y cambia todas las barras de navegación de estilo sencillo de Apple a un gradiente brillante. Sin embargo, el problema que estoy teniendo es que está anulando algún estilo que yo no quiero también. Mi problema particular es que anula el fondo de la barra de navegación en el UIPopoverController del iPad, creando una experiencia de usuario desagradable. Por favor, dime cómo solucionarlo.

Editar: Tenga en cuenta que esta es una aplicación universal y abro el selector de imágenes a través de un UIPopoverController en el iPad y una vista modal en el iPhone/iPod. Solo quiero eliminar el fondo personalizado para navBar en el iPad popover, no en la vista modal.

Cómo Actualmente se parece a: enter image description here

¿Cómo quiero que se vea como: enter image description here

Gracias de antemano por su ayuda, Guvvy

Respuesta

14

Trate de usar el método +appearanceWhenContainedIn: para eliminar la personalización de la imagen de fondo de las barras de navegación cuando están contenidas en los controladores de popover. Algo como esto:

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

No está claro a partir de la documentación si la imagen de fondo de una barra de navegación configuración para nil restaura su apariencia, si por defecto que no funciona, puede que tenga que tomar el camino contrario, y proporcionar la lista de controladores de vista de contenedor que no son popover que está usando para +appearanceWhenContainedIn:.

+2

Configurarlo en 'nil' hizo el trabajo. ¡Muchas gracias por su ayuda! No puedo creer que no me haya dado cuenta por mi cuenta. – Gavy

+0

mismo truco funciona para los botones también, por ejemplo: '[[UIBarButtonItem appearanceWhenContainedIn: [UINavigationBar clase], [clase UIPopoverController], nil] setBackgroundImage: cero forState: UIControlStateNormal barMetrics: UIBarMetricsDefault];' –

Cuestiones relacionadas