2014-04-05 23 views
6

Sto cercando di rendere la barra di navigazione trasparente al 100%, in modo che UINavigationButtonItems sia visibile solo e lo sfondo (normalmente bianco) dovrebbe mostrare l'immagine di sfondo.UINavigationController trasparenza?

Ho provato

HomeNavigationController *navBar = [[HomeNavigationController alloc] initWithRootViewController:self.myViewController]; 
[navBar.navigationBar setBarTintColor:[UIColor clearColor]]; 
    [navBar.navigationBar setTranslucent:YES]; 

sebbene non sembrano funzionare.

EDIT:

Utilizzando

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] 
        forBarMetrics:UIBarMetricsDefault]; 
self.navigationController.navigationBar.shadowImage = [UIImage new]; 
self.navigationController.navigationBar.translucent = YES; 
self.navigationController.view.backgroundColor = [UIColor clearColor]; 

posso vedere che ha funzionato come previsto, tuttavia gli elementi sono ora anche invisibile.


FINALEDIT: Ah il codice precedente funziona, basta assicurarsi di non applicare altre modifiche all'aspetto senza prove prima!

Il codice che in realtà ciò che si intende:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] 
                forBarMetrics:UIBarMetricsDefault]; 

In alternativa è possibile impostare un'immagine trasparente, ma questo rende più senso. Avrai bisogno del resto del codice mostrato nella modifica originale se desideri che nessuna riga rappresenti il ​​bordo.

+0

si potrebbe provare [navBar.navigationBar setTintColor: [UIColor colorWithWhite: 1.0 alpha: 0.0]; – user2277872

+1

Vedi questo: http://stackoverflow.com/questions/21850622/transparent-uinavigationbar/21850947#21850947, forse ti aiuta. –

+1

Se hai bisogno che la tua UINavigationBar sia completamente trasparente, allora perché non nasconderla del tutto, e usa "UIButtons" personalizzati invece di "UIBarButtonItems"? L'aspetto di 'UINavigationBars',' UITabBars' e 'UIToolbars' è cambiato con iOS 7 rendendo più difficile e probabilmente non consigliabile armeggiare con la loro trasparenza. –

risposta

6

C'è un trucco. Basta impostare l'immagine trasparente sullo sfondo della barra di navigazione.

UIImage *fakeImage = [UIImage imageNamed:@"transparentImage"]; 
[navigationBar setBackgroundImage:fakeImage forBarMetrics:UIBarMetricsDefault]; 

O

[navigationBar setBackgroundImage:[UIImage new] 
        forBarMetrics:UIBarMetricsDefault]; 
+1

Sarà inoltre necessario impostare l'immagine shadow allo stesso modo di una 'UIImage' vuota. – voidref