2014-02-18 10 views
12

Bin ein Neuling zu IOS und ich fand diese Lösung auf die UINavigationBar Transparent. Wo in meiner Projektdatei kann ich diesen Code setzenTransparente UINavigationBar

[self.navigationBar setBackgroundImage:[UIImage new] 
        forBarMetrics:UIBarMetricsDefault]; 
self.navigationBar.shadowImage = [UIImage new]; 
self.navigationBar.translucent = YES; 

So, dass es in meinem ganzen Projekt angewandt wird, in dem Navigationscontroller benutzt wird.

+0

Ok .. Was ist Ihr Problem? – iPatel

+0

In 'viewDidLoad' oder in Ihrer appDelegate-Datei in' didFinishLunchWithOptions' –

+0

Ich habe diesen Code in meine AppDelegate eingefügt, aber es macht die Navbar nicht transparent.Ist da etwas, was ich ändern sollte? Sorry..Started lernen ios :) –

Antwort

33

Setzen Sie in Ihrem viewDidLoad Funktion Ihres RootViewController diesen Code verwenden:

Objective-C:

[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]; 

Swift 2.x:

if let navigationBar = navigationController?.navigationBar { 
     navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 
     navigationBar.shadowImage = UIImage() 
     navigationBar.translucent = true 
     navigationController?.view.backgroundColor = .clearColor() 
    } 

Swift 3:

if let navigationBar = navigationController?.navigationBar { 
     navigationBar.setBackgroundImage(UIImage(), for: .default) 
     navigationBar.shadowImage = UIImage() 
     navigationBar.isTranslucent = true 
     navigationController?.view?.backgroundColor = .clear 
    } 

Dieses sicher funktioniert! Transparent UINavigationBar.

+0

Das ist, was ich in meiner App habeDelegate [[UINavigationBar Aussehen] setBackgroundImage: [UIImage new] forBarMetrics: UIBarMetricsDefault]; [UINavigationBar Aussehen] .shadowImage = [UIImage new]; [UINavigationBar Aussehen] .translucent = YES; Wenn ich renne, stürzt die App mit diesem Fehler ab Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '*** Unzulässiger Eigenschaftstyp, c für Erscheinungsbildeinsteller,' _installAppearanceSwizzlesForSetter: ' Mit Hilfe des Haltepunkts zeigt er Fehler beim Setzen transluzent –

+3

wenn ich 5 mehr + 1 geben könnte dann würde ich. Dies ist eine großartige Lösung – Katushai

+0

So deaktivieren Sie die Transparenz der Navigationsleiste in der nächsten Ansicht, wenn Sie – Chlebta

2

Wenn Sie das Aussehen ändern möchten für alle Ihre Anwendung, empfehle ich Ihnen, diese zu verwenden:

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 

Hoffnung, die

+0

Ich habe das versucht, aber es macht es nicht durchschauen. –

1

In Ihrem UIViewController Klasse helfen. Sie können auch UIAppearance Mechanismus http://nshipster.com/uiappearance/

und legen Sie diese

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] 
forBarMetrics:UIBarMetricsDefault]; 
    [UINavigationBar appearance].shadowImage = [UIImage imageNamed:@"Your image file here"]; 

in

- (BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions 
+0

Die App stürzt ab, wenn ich diese Zeile [UINavigationBar Aussehen] einführe.transluzent = JA; –

+0

Erhalte diesen Fehler Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '*** Unzulässiger Eigenschaftstyp, c für Erscheinungseinstellung, _installAppearanceSwizzlesForSetter:' –

+0

Ja, tut mir leid. transluzent ist kein Aussehenselektor. Sie können die vollständige Liste der Aussehen Selektoren finden Sie hier https://gist.github.com/mattt/5135521 – Avt

-3

Satz folgenden Code

Self.navigationcontroller.navigationbar.transculant=yes; 
+0

Nun versuchen Aadi .... Aber Sie fehlen, um ein leeres Bild für die Navigationsleiste zu setzen. – Optimistic

0
Transparent UIToolbar: 
self.toolbar.setBackgroundImage(UIImage(), 
           forToolbarPosition: UIBarPosition.Any, 
           barMetrics: UIBarMetrics.Default) 
self.toolbar.setShadowImage(UIImage(), 
          forToolbarPosition: UIBarPosition.Any) 
Transparent UINavigationBar: 
self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
self.navigationBar.shadowImage = UIImage() 
self.navigationBar.translucent = true