2013-10-13 6 views
8

Ho un UINavigationBar che ha un'immagine di sfondo impostata nella classe delegati dell'app, quindi puoi immaginare perché non vorrei che la barra di navigazione fosse traslucida. Credo che sia il colpevole per questo: http://imgur.com/v3e0NIoiOS 7 UINavigationbar setTranslucent: NO crash app

In ogni modo, quando ho messo questa riga di codice:

[[UINavigationBar appearance] setTranslucent:NO]; 

nel mio AppDelegate ho incontrato questo errore:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Illegal property type, B for appearance setter, _installAppearanceSwizzlesForSetter:' 

Anche quando cerco di individualmente rendere ogni UINavigationbar non trasparente in ogni classe, ho ancora quella stupida barra bianca nell'immagine! Non vengono però lanciati errori, il che mi fa pensare se il codice non funzioni o se la trasparenza non sia il mio problema?

Grazie!

EDIT:

Ecco il codice che sto usando nella mia AppDelegate per rendere lo sfondo personalizzato per la barra di navigazione:

[[UINavigationBar appearance] setTitleTextAttributes: @{ 
                 UITextAttributeTextColor: [UIColor whiteColor], 
                 UITextAttributeTextShadowColor: [UIColor blackColor], 
                 UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], 
                 UITextAttributeFont: [UIFont fontWithName:@"Code-Bold" size:23.0f] 
                 }]; 
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:NO]; 

UIImage *navBarImage = [[UIImage imageNamed:@"menubar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 15, 5, 15)]; 

[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; 

Anche quando faccio lo sfondo del UIViewController nero, la barra bianca è ancora lì .. Ora dubito fortemente che la trasparenza sia il mio problema!

+0

io preferirei non fare un NavigationBar .. – user1064249

risposta

0

io ti uso Interface Builder è possibile disattivare translucen da questo file

Xib -> Attributi -> simulati Metriche e impostare la proprietà Top Bar di Opaco

Oppure provate

self.navigationController .navigationBar.barStyle = UIBarStyleBlackOpaque;

O O O controllare questo post https://stackoverflow.com/a/19128721/2876717

+0

I' m usando storyboard :( – user1064249

+0

Ho provato l'UIBarStyleBlackOpaque, e anche se la batteria bianca e il tempo sono belli, la barra bianca è ancora lì L'opzione storyboard non è lì perché sto usando una Navigazione Contro ller. – user1064249

5

Ty questo e posizionarlo nella viewdidload di ciascuna delle classi viewcontrollers invece:

self.navigationController.navigationBar.translucent = NO; 
+1

ho provato, ma il bianco sta ancora mostrando. Mi fa pensare se il traslucido è in realtà il mio problema .. – user1064249