2012-07-04 3 views
6

Sono in procinto di incorporare la caratteristica UIA di iOS 5 per dare alla mia app universale un tema unico. Attualmente, ho implementato un certo codice nel mio App Delegato di dare le barre di navigazione app personalizzate:UIAppearance Rimuovi sfondo NavBar personalizzato per UIPopoverController

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

questo funziona bene e cambia tutte le barre di navigazione dallo stile semplice di Apple per un gradiente luminoso. Tuttavia, il problema che sto avendo è che sta ignorando uno stile che non lo voglio anche io. Il mio problema particolare è che sovrascrive lo sfondo della barra di navigazione in UIPopoverController dell'iPad, creando una brutta esperienza utente. Per favore dimmi come aggiustarlo

Modifica: Si noti che questa è un'app universale e apro il selettore di immagini tramite un UIPopoverController sull'iPad e una vista modale su iPhone/iPod. Voglio solo rimuovere lo sfondo personalizzato per navBar sul popover iPad, non sulla vista modale.

Come appare attualmente come: enter image description here

come voglio farlo sembrare come: enter image description here

Grazie in anticipo per il vostro aiuto, Guvvy

risposta

14

Prova ad usare il metodo +appearanceWhenContainedIn: per rimuovere la personalizzazione dell'immagine di sfondo dalle barre di navigazione quando sono contenute nei controller popover. Qualcosa di simile a questo:

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

Non è chiaro dalla documentazione se l'impostazione immagine di sfondo del una barra di navigazione per nil ripristina il suo aspetto, se di default che non funziona, potrebbe essere necessario prendere l'approccio opposto, e fornire la elenco dei controller di visualizzazione contenitore non popover che stai utilizzando per +appearanceWhenContainedIn:.

+2

Impostarlo su 'nil' ha funzionato. Grazie mille per il vostro aiuto! Non posso credere di non averlo capito da solo. – Gavy

+0

stesso trucco funziona per i pulsanti troppo, per esempio: '[[UIBarButtonItem appearanceWhenContainedIn: [UINavigationBar classe], [classe UIPopoverController], nil] setBackgroundImage: nil forState: UIControlStateNormal barMetrics: UIBarMetricsDefault];' –