2017-07-19 43 views
0

我的問題是與navigationController規則不適用。navigationController規則不適用於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) 
    } 

這裏的結果 - 顏色是不存在的

enter image description here

我應該怎麼辦?

+0

那是viewDidLoad中的個人資料? – ppinho

+5

「規則只是不適用」 - 這是對我長期以來看到的一個問題最模糊的描述。什麼不工作? –

+0

查看最新的更新 – sinusGob

回答

0

您的代碼設置樣式屬性看起來是正確的。很可能navigationController是零。

更好的方法是使用自定義導航控制器子類並將其連接到「界面」構建器中的導航控制器。

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

第一設置bartintColor和 後,您在導航欄設置了「清晰的圖像」 :) 當然它是透明的。

你需要像一些顏色或代碼創建它:(例如)

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() 
    } 
} 

,並在導航條這樣的設置圖片:

呼叫時,控制器將出現

此的導航欄的變化
func updatenavigationBar() { 
     navigationController?.navigationBar.tintColor = .white 
     navigationController?.navigationBar.isTranslucent = true 
     navigationController?.navigationBar.setBackgroundImage(UIImage.imageWithColor(color), for: .default) 
     navigationController?.navigationBar.shadowImage = UIImage() 
    } 
0

我不太清楚你問的問題是基於這個問題,但如果你想改變導航欄的顏色,我會建議改變 :

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

要:

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

這將添加的顏色作爲背景色,而不是僅僅着色顏色。

0

使用此代碼

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 
     } 
    } 

您可以用這種方式

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) 
    }