2017-11-15 4 views
1

Ich habe Standardeinstellung für UINavigationBar:iOS 11 Navigationsleiste transparent mit großen Titeln

UINavigationBar.appearance().barTintColor = .red 
     UINavigationBar.appearance().titleTextAttributes = [ NSAttributedStringKey.foregroundColor:#colorLiteral(red: 1, green: 0.99997437, blue: 0.9999912977, alpha: 1)] 
     if #available(iOS 11.0, *) { 
      UINavigationBar.appearance().largeTitleTextAttributes = [ NSAttributedStringKey.foregroundColor:#colorLiteral(red: 1, green: 0.99997437, blue: 0.9999912977, alpha: 1)] 
     } 
     UINavigationBar.appearance().isTranslucent = false 
     UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 0.99997437, blue: 0.9999912977, alpha: 1) 

Struktur: UINaviagtionController -> PostsTableViewController -> PostTableViewController.

Ich möchte eine große Navigationsleiste auf PostsViewController (mit undurchsichtiger Hintergrundfarbe) und transparente Navigationsleiste auf PostViewController haben.

In PostTableViewController ich hinzufügen:

self.navigationController?.navigationBar.backgroundColor = UIColor.clear 
     self.navigationController?.navigationBar.barTintColor = .clear 

     self.automaticallyAdjustsScrollViewInsets = false 
     //self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) 
     //self.navigationController?.navigationBar.shadowImage = UIImage() 
     if #available(iOS 11.0, *) { 
      print("asd") 
      self.tableView.insetsContentViewsToSafeArea = false 
      self.tableView.contentInsetAdjustmentBehavior = .never 
     } else { 
      self.automaticallyAdjustsScrollViewInsets = false 
     } 

Navigationsleiste BLACK ist. Ich verstehe nicht, wie es transparent machen ... PostsTableViewController PostTableViewController

UPDATE:

git-Repository-Hub: https://github.com/Mazorati/testnavbar

i gesetzt isTranslucent = true, aber große Navigation wird auch transparent. Nur die Standardnavigation ist in Ordnung.

PostsViewController

PostsViewController

PostViewController

Aber ich möchte navigationbar Farbe undurchsichtig sein, also:

self.navigationController?.view.backgroundColor = .red 
self.navigationController?.navigationBar.isTranslucent = false 
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) 
self.navigationController?.navigationBar.shadowImage = UIImage() 
self.navigationController?.navigationBar.prefersLargeTitles = true 
self.navigationItem.largeTitleDisplayMode = .automatic 

Als Ergebnis:

opaque large navigation

3D-Ebene:

3d layers

+0

Haben Sie das versucht? https://stackoverflow.com/a/33106533/1214800 – brandonscript

+0

Das hat nichts mit meiner Frage zu tun. Ich benutze push segue – Mazorati

+1

Ist egal. Gleicher Ansichtsstapel, unterschiedlicher Übergang. Hast Du es versucht? – brandonscript

Antwort

0

haben Sie versucht, zu ändern, es zu durchscheinend?

self.navigationController?.navigationBar.isTranslucent = true 

UPDATE:

Sie müssen bedenken, dass die Navigationsleiste auf der UINavigationController gehört, die die Ansichten im Inneren hält, so dass, wenn Sie es in einem ändern Sie es für alle verändert.

Die Lösung wäre, es in der viewWillAppear-Methode des zweiten View-Controllers auf transparent zu setzen und in der viewDidDissapear-Methode auf nicht-transparent zu ändern. Spielen Sie mit den Methoden viewWill und viewDid auf, bis Sie das richtige für Ihre Bedürfnisse gefunden haben.

+0

danke. Überprüfen Sie mein Update zu diesem Post.PostsViewController große Navigation ist jetzt ohne Hintergrund ... Wie Hintergrund hinzufügen? – Mazorati

+0

Ich aktualisierte meine Antwort, bitte überprüfen Sie, dass es funktioniert, was Sie wollen – gabriellanata

0

Versuchen Sie dies, das macht Ihre Navigationsleiste transparent.

let img = UIImage() 
    navigationController?.navigationBar.shadowImage = img 
    navigationController?.navigationBar.setBackgroundImage(img, for: .default) 
+0

versucht, Ergebnis immer noch das gleiche – Mazorati

Verwandte Themen