簡體   English   中英

navigationController規則不適用於ViewController

[英]navigationController rules doesn't work on ViewController

我的問題是navigationController規則不適用。

在此處輸入圖片說明

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

結果如下-顏色不存在

在此處輸入圖片說明

我該怎么辦?

您設置樣式屬性的代碼看起來正確。 navigationController可能為nil。

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

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

首先,您設置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()
    }
}

並在導航欄中設置圖像,如下所示:

當控制器出現時調用此navigationBar更改

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

我不確定您要問的問題是什么,但是如果您要更改導航欄的顏色,我建議您更改:

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)

這會將顏色添加為背景顏色,而不只是色調顏色。

使用此代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM