2017-07-19 4 views
0

Mein Problem ist mit der navigationController die Regeln nur nicht gelten.navigationController Regeln funktioniert nicht auf ViewController

enter image description here

override func viewDidLoad() { 
    super.viewDidLoad() 
    navigationBarColor() 
} 

func navigationBarColor() { 
     navigationController?.navigationBar.barTintColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0) 
     navigationController?.navigationBar.shadowImage = UIImage() 
     navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) 
    } 

Hier ist das Ergebnis - Die Farbe ist nicht da

enter image description here

Was soll ich tun?

+0

Ist das viewDidLoad in Profil? – ppinho

+5

"Die Regeln gelten einfach nicht" - das ist die vage Beschreibung eines Problems, das ich seit langem gesehen habe. Was genau funktioniert nicht? –

+0

Überprüfen Sie das neueste Update – sinusGob

Antwort

0

Ihr Code, der die Stileigenschaften einstellt, sieht korrekt aus. Es ist wahrscheinlich, dass navigationController Null ist.

Ein besserer Ansatz besteht darin, eine benutzerdefinierte Navigationssteuerungsunterklasse zu verwenden und sie mit dem Navigationscontroller im Interface-Builder zu verbinden.

open class NavigationController: UINavigationController { 
    open override func viewDidLoad() { 
     super.viewDidLoad() 
     navigationBar.barTintColor = UIColor.blue 
    } 
} 
0

zuerst stellen Sie bartintColor und danach stellen Sie die „klares Bild“ in Navigationsleiste :) es ist natürlich transparent sein.

Sie benötigen Bild mit etwas Farbe oder in Code erstellen: (zB)

extension UIImage { 

class func imageWithColor(_ color: UIColor) -> UIImage { 
    let rect = CGRect(origin: CGPoint.zero, size: CGSize(width: 1.0, height: 1.0)) 
    UIGraphicsBeginImageContext(rect.size); 

    guard let context = UIGraphicsGetCurrentContext() else { 
     UIGraphicsEndImageContext() 
     return UIImage() 
    } 

    context.setFillColor(color.cgColor); 
    context.fill(rect); 

    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image ?? UIImage() 
    } 
} 

und legen Bild in Navigationsleiste wie folgt aus:

Aufruf dieser navigationbar ändert sich, wenn Controller

erscheinen wird
func updatenavigationBar() { 
     navigationController?.navigationBar.tintColor = .white 
     navigationController?.navigationBar.isTranslucent = true 
     navigationController?.navigationBar.setBackgroundImage(UIImage.imageWithColor(color), for: .default) 
     navigationController?.navigationBar.shadowImage = UIImage() 
    } 
0

Ich bin nicht ganz sicher, was Sie fragen, basierend auf der Frage, aber wenn Sie versuchen, die Farbe der Navigationsleiste zu ändern, würde ich vorschlagen,zu ändern:

navigationController?.navigationBar.barTintColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0) 

An:

navigationController?.navigationBar.backgroundColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0) 

Dies wird die Farbe als Hintergrundfarbe, statt nur der Farbton Farbe.

0

Mit diesem Code

import Foundation 
    import Swift 

    extension UINavigationController 
    { 
     func setMainTopNavigationBarAttribute() -> Void 
     { 
      self.navigationBar.shadowImage = UIImage() 
      self.navigationBar.setBackgroundImage(UIImage(), for: .default) 
      self.navigationBar.isTranslucent = false 
      self.navigationBar.tintColor = UIColor.white 
      self.navigationBar.backgroundColor = UIColor.white 
     } 
    } 

können Sie auf diese Weise verwenden

let navigationController = UIStoryboard.user.instantiateViewController(withIdentifier: "MMNavigationController") as! UINavigationController 
navigationController.setMainTopNavigationBarAttribute() 
0
You just change this two line in your function 


func navigationBarColor() { 

navigationController?.navigationBar.barTintColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0) 

//change this two line in your function 
navigationController?.navigationBar.shadowImage = UIImage.init(named: "") 
     navigationController?.navigationBar.setBackgroundImage(UIImage.init(named: ""), for: .default) 
    } 
Verwandte Themen