स्विफ्ट में नेविगेशन बार का रंग बदलना


240

मैं उपयोगकर्ता को पूरे ऐप के लिए रंग विषय चुनने की अनुमति देने के लिए पिकर व्यू का उपयोग कर रहा हूं।

मैं नेविगेशन बार, पृष्ठभूमि और संभवतः टैब बार (यदि यह संभव है) का रंग बदलने की योजना बना रहा हूं।

मैं यह करने के लिए शोध कर रहा हूं लेकिन कोई भी स्विफ्ट उदाहरण नहीं मिल सकता है। क्या कोई मुझे उस कोड का उदाहरण दे सकता है जिसे मुझे नेविगेशन बार रंग और नेविगेशन बार पाठ रंग को बदलने के लिए उपयोग करने की आवश्यकता होगी?

पिकर व्यू सेट किया गया है, मैं यूआई रंग बदलने के लिए कोड की तलाश कर रहा हूं।

जवाबों:


526

नेविगेशन बार:

navigationController?.navigationBar.barTintColor = UIColor.green

ग्रीनकोलर को बदलें जो भी आप चाहते हैं, आप चाहें तो आरजीबी का उपयोग कर सकते हैं।

नेविगेशन बार पाठ:

navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.orange]

जो भी रंग आपको पसंद हो उसके साथ ऑरेंजकोलर बदलें।

टैब पट्टी:

tabBarController?.tabBar.barTintColor = UIColor.brown

टैब बार पाठ:

tabBarController?.tabBar.tintColor = UIColor.yellow

अंतिम दो पर, अपनी पसंद के रंग के साथ भूरे रंग के चर्मपत्र और पीले रंग की चोली को बदलें।


आपका बहुत बहुत धन्यवाद! मैं जो मैं कोशिश कर रहा था उससे दूर नहीं था, लेकिन मेरे पास सही क्रम में चीजें नहीं थीं।
user3746428

मुझे यकीन नहीं है। यदि आप एक मोडल के विपरीत पुश सेग का उपयोग कर रहे हैं, तो यह एक ही नेविगेशन बार होना चाहिए, लेकिन मुझे पूरी तरह से यकीन नहीं है। माफ़ करना।
ट्रम्पेटर 201

2
नए Xcode betas को अपडेट करने के बाद, शीर्षक टेक्स्ट रंग सेट करना अब काम नहीं करता है। TitleTextAttributes स्विफ्ट में उपलब्ध नहीं है। कोई विचार?
user3746428

1
क्या आप एक नया प्रश्न खोल सकते हैं और शायद इससे लिंक कर सकते हैं? चैट इस तरह से कुछ के लिए सबसे अच्छी जगह नहीं है।
trumpeter201

3
मैंने पाया कि इसकी मुझे बनाने वाली विशेषता के रूप में NSForegroundColorAttributeName का उपयोग करती है, लेकिन अन्यथा महान काम कर रही है।
जेक हॉल

90

यहां कुछ बहुत ही बुनियादी उपस्थिति अनुकूलन हैं जिन्हें आप एप्लिकेशन विस्तृत रूप से लागू कर सकते हैं:

UINavigationBar.appearance().backgroundColor = UIColor.greenColor()
UIBarButtonItem.appearance().tintColor = UIColor.magentaColor()
//Since iOS 7.0 UITextAttributeTextColor was replaced by NSForegroundColorAttributeName
UINavigationBar.appearance().titleTextAttributes = [UITextAttributeTextColor: UIColor.blueColor()]
UITabBar.appearance().backgroundColor = UIColor.yellowColor();

UIAppearanceएपीआई के बारे में अधिक स्विफ्ट में आप यहां पढ़ सकते हैं: https://developer.apple.com/documentation/uikit/uiappance


तो मैं पूरे ऐप के लिए नेविगेशन बार का रंग बदलने के लिए इसका उपयोग कैसे करूंगा? फिलहाल मेरे पास बस: self.navigationController.navigationBar.barTintColor = UIColor.newBlueColor () और निश्चित रूप से यह सिर्फ देखने के नेविगेशन बार के रंग को बदलता है जो कि कोड के भीतर है। मैं सभी नेविगेशन बार को बदलने के लिए इसका उपयोग कैसे कर सकता हूं? मैंने उपयोग करने की कोशिश की: UINavigationBar.appearance ()। बैकग्राउंड कलर = UIColor.newBlueColor () लेकिन यह कुछ भी करने के लिए प्रतीत नहीं होता है।
user3746428

4
एंटियर ऐप में chnages को प्रतिबिंबित करने के लिए, AppDelegate.swift func एप्लिकेशन (एप्लिकेशन: UIApplication, didFinishLaunchingWithOptions लॉन्चिंग: [NSOjectject: AnyObject]?]> बूल {// प्लेस कोड कोड से ऊपर "
बद्रीनाथ

7
बैकग्राउंड कलर की बजाए बार टिंटकलर का इस्तेमाल करें। UINavigationBar.appearance ()। BarTintColor = UIColor.greenColor ()
माइकल पीटरसन

@Keenle मैं थोड़ा उलझन में हूँ ... UINavigationBar की पृष्ठभूमि का रंग क्यों नहीं बदल रहा है उपस्थिति API के माध्यम से रंग पूरी तरह से बदल जाता है? मैंने पृष्ठभूमि के रंग को नीले रंग में सेट करने की कोशिश की और इसने मुझे नीले रंग का एक अजीब सा शेड दे दिया ...
fja

59

स्विफ्ट 3, 4, 4.2, 5+ के लिए अपडेट किया गया

// setup navBar.....
UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
UINavigationBar.appearance().isTranslucent = false

स्विफ्ट 4

UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UINavigationBar.appearance().isTranslucent = false

स्विफ्ट 4.2, 5+

UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
UINavigationBar.appearance().isTranslucent = false

यहाँ भी देख सकते हैं: https://github.com/hasnine/iOSUtilitiesSource


स्विफ्ट 4.2: NSAttributedString.Key.foregroundColor
कासरा बाबई

बार्टिन्कॉल की बजाय सफेद रंग को टिंट रंग सेट करना मूल रंग दिखाता है। महान!
निककार्ड

@NickCoder इसकी सराहना करता है। : :) भी मेरी lib जाँच github.com/hasnine/iOSUtilitiesSource
जमील Hasnine तमीम

52
UINavigationBar.appearance().barTintColor = UIColor(red: 46.0/255.0, green: 14.0/255.0, blue: 74.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]

बस इस लाइन didFinishLaunchingWithOptionsको अपने कोड में पेस्ट करें ।


मैंने RGB के साथ यह कोशिश की और यह कोई फर्क नहीं पड़ता कि मैं इसे कहाँ रखता हूँ।
नाथन मैककस्ले

@NathanMcKaskle अपना RGB चेक करें, यह "xx / 250.0f" फॉर्मेट में होना चाहिए।
मोहित तोमर

डिफाइनल लैंचिंगविथ ऑडिशंस में इस्तेमाल किया और पूरी तरह से काम किया। अंदर देखने के लिए पूरी तरह से काम नहीं करते।
तौहीद

26

AppDelegate के भीतर , इसने विश्व स्तर पर NavBar के प्रारूप को बदल दिया है और आपको जो मुझे लगता है कि आप और अन्य लोगों की तलाश कर रहे हैं, यह देने के लिए नीचे की रेखा / सीमा (जो कि ज्यादातर लोगों के लिए एक समस्या क्षेत्र है) को हटा देती है:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    UINavigationBar.appearance().shadowImage = UIImage()
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().barTintColor = Style.SELECTED_COLOR
    UINavigationBar.appearance().translucent = false
    UINavigationBar.appearance().clipsToBounds = false
    UINavigationBar.appearance().backgroundColor = Style.SELECTED_COLOR
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : (UIFont(name: "FONT NAME", size: 18))!, NSForegroundColorAttributeName: UIColor.whiteColor()] }

फिर आप एक Constants.swift फ़ाइल को सेटअप कर सकते हैं , और इसमें रंगों और फोंट आदि के साथ एक शैली संरचना है। आप तब किसी भी ViewController के लिए एक tableView / pickerView जोड़ सकते हैं और उपयोगकर्ता को themeColor बदलने की अनुमति देने के लिए "availableThemes" सरणी का उपयोग कर सकते हैं।

इसके बारे में सुंदर बात यह है कि आप प्रत्येक रंग के लिए अपने पूरे ऐप में एक संदर्भ का उपयोग कर सकते हैं और यह उपयोगकर्ता के चयनित "थीम" के आधार पर अपडेट करेगा और एक के बिना यह थीम 1 () के लिए चूकता है:

import Foundation
import UIKit

struct Style {


static let availableThemes = ["Theme 1","Theme 2","Theme 3"]

static func loadTheme(){
    let defaults = NSUserDefaults.standardUserDefaults()
    if let name = defaults.stringForKey("Theme"){
        // Select the Theme
        if name == availableThemes[0]   { theme1()  }
        if name == availableThemes[1]   { theme2()  }
        if name == availableThemes[2]   { theme3()  }
    }else{
        defaults.setObject(availableThemes[0], forKey: "Theme")
        theme1()
    }
}

 // Colors specific to theme - can include multiple colours here for each one
static func theme1(){
   static var SELECTED_COLOR = UIColor(red:70/255, green: 38/255, blue: 92/255, alpha: 1) }

static func theme2(){
    static var SELECTED_COLOR = UIColor(red:255/255, green: 255/255, blue: 255/255, alpha: 1) }

static func theme3(){
    static var SELECTED_COLOR = UIColor(red:90/255, green: 50/255, blue: 120/255, alpha: 1) } ...

2
धन्यवाद आदमी, आपके जवाब ने वास्तव में मेरी मदद की कम से कम मेरे लिए मैंने इसके पहले भाग का उपयोग किया और यह बहुत बढ़िया और बहुत उपयोगी था
अमीर

1
बहुत बहुत धन्यवाद यार, मैंने यहाँ हर उत्तर की कोशिश की और उनमें से किसी ने भी आपके अलावा काम नहीं किया: D
रौनक शाह

19

स्टोरीबोर्ड पर ऐसा करने के लिए (इंटरफ़ेस बिल्डर इंस्पेक्टर)

इसकी मदद से IBDesignable, हम इंटरफ़ेस बिल्डर इंस्पेक्टर के लिए UINavigationControllerऔर विकल्प जोड़ सकते हैं और उन्हें स्टोरीबोर्ड पर ट्विक कर सकते हैं। सबसे पहले, अपने प्रोजेक्ट में निम्न कोड जोड़ें।

@IBDesignable extension UINavigationController {
    @IBInspectable var barTintColor: UIColor? {
        set {
            guard let uiColor = newValue else { return }
            navigationBar.barTintColor = uiColor
        }
        get {
            guard let color = navigationBar.barTintColor else { return nil }
            return color
        }
    }
}

फिर बस स्टोरीबोर्ड पर नेविगेशन नियंत्रक के लिए विशेषताओं को सेट करें।

यहां छवि विवरण दर्ज करें

इस दृष्टिकोण का उपयोग स्टोरीबोर्ड से नेविगेशन बार पाठ के रंग का प्रबंधन करने के लिए भी किया जा सकता है:

@IBInspectable var barTextColor: UIColor? {
  set {
    guard let uiColor = newValue else {return}
    navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: uiColor]
  }
  get {
    guard let textAttributes = navigationBar.titleTextAttributes else { return nil }
    return textAttributes[NSAttributedStringKey.foregroundColor] as? UIColor
  }
}

18

स्विफ्ट 4:

एप्लिकेशन स्तर पर नेविगेशन बार उपस्थिति को बदलने के लिए पूरी तरह से काम करने वाला कोड।

यहां छवि विवरण दर्ज करें

// MARK: Navigation Bar Customisation

// To change background colour.
UINavigationBar.appearance().barTintColor = .init(red: 23.0/255, green: 197.0/255, blue: 157.0/255, alpha: 1.0)

// To change colour of tappable items.
UINavigationBar.appearance().tintColor = .white

// To apply textAttributes to title i.e. colour, font etc.
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.white,
                                                    .font : UIFont.init(name: "AvenirNext-DemiBold", size: 22.0)!]
// To control navigation bar's translucency.
UINavigationBar.appearance().isTranslucent = false

हैप्पी कोडिंग!


16
UINavigationBar.appearance().barTintColor

मेरे लिए काम किया


15

स्विफ्ट 4 - चिकना संक्रमण (सबसे अच्छा समाधान):

यदि आप नेविगेशन कंट्रोलर से वापस आ रहे हैं और आपको उस नेविगेशन कंट्रोलर पर एक अलग रंग सेट करना है जिसे आप उपयोग करना चाहते हैं

override func willMove(toParentViewController parent: UIViewController?) {
    navigationController?.navigationBar.barTintColor = .white
    navigationController?.navigationBar.tintColor = Constants.AppColor
}

इसके बजाय इसे व्यूप्लेयर में डाल दें ताकि संक्रमण साफ हो जाए।

स्विफ्ट 4.2

override func willMove(toParent parent: UIViewController?) {
    navigationController?.navigationBar.barTintColor = UIColor.black
    navigationController?.navigationBar.tintColor = UIColor.black
}

11

में स्विफ्ट 4

आप नेविगेशन बार का रंग बदल सकते हैं। बस नीचे दिए गए कोड स्निपेट का उपयोग करेंviewDidLoad()

नेविगेशन बार का रंग

self.navigationController?.navigationBar.barTintColor = UIColor.white

नेविगेशन बार पाठ रंग

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.purple]

के लिए आईओएस 11 बड़े शीर्षक नेविगेशन बार , तो आप उपयोग करने की आवश्यकता largeTitleTextAttributesसंपत्ति

self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.purple]

9

appearance()समारोह हमेशा मेरे लिए काम नहीं। इसलिए मैं एक NC ऑब्जेक्ट बनाना और उसकी विशेषताओं को बदलना पसंद करता हूं।

var navBarColor = navigationController!.navigationBar
navBarColor.barTintColor =
    UIColor(red:  255/255.0, green: 0/255.0, blue: 0/255.0, alpha: 100.0/100.0)
navBarColor.titleTextAttributes =
    [NSForegroundColorAttributeName: UIColor.whiteColor()]

यदि आप केवल पाठ के बजाय एक छवि जोड़ना चाहते हैं, तो यह भी काम करता है

var imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 70, height: 70))
imageView.contentMode = .ScaleAspectFit

var image = UIImage(named: "logo")
imageView.image = image
navigationItem.titleView = imageView

इस तरह से, मैं स्वयं को बदलने में सक्षम था। धन्यवाद।
ओगूझान


4

iOS 8 (स्विफ्ट)

let font: UIFont = UIFont(name: "fontName", size: 17)   
let color = UIColor.backColor()
self.navigationController?.navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName: color], forState: .Normal)

4

यदि आपके पास अनुकूलित नेविगेशन नियंत्रक है, तो आप ऊपर कोड स्निपेट का उपयोग कर सकते हैं। इसलिए मेरे मामले में, मैंने निम्नलिखित कोड टुकड़ों के रूप में उपयोग किया है।

स्विफ्ट 3.0, एक्सकोड 8.1 संस्करण

navigationController.navigationBar.barTintColor = UIColor.green

नेविगेशन बार पाठ:

navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

यह बहुत उपयोगी वार्ता है।



3

स्विफ्ट 2 में

नेविगेशन बार में रंग बदलने के लिए,

navigationController?.navigationBar.barTintColor = UIColor.whiteColor()

आइटम नेविगेशन बार में रंग बदलने के लिए,

navigationController?.navigationBar.tintColor = UIColor.blueColor()

या

navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.blueColor()]

3

स्विफ्ट 3

UINavigationBar.appearance().barTintColor = UIColor(colorLiteralRed: 51/255, green: 90/255, blue: 149/255, alpha: 1)

इससे आपका नेविगेशन बार का रंग फेसबुक बार के रंग की तरह सेट हो जाएगा :)


3

स्विफ्ट 3 और स्विफ्ट 4 संगत एक्सकोड 9

इसके लिए एक बेहतर समाधान सामान्य नेविगेशन बार के लिए एक क्लास बनाना है

मेरे पास 5 नियंत्रक हैं और प्रत्येक नियंत्रक शीर्षक को नारंगी रंग में बदल दिया गया है। चूंकि प्रत्येक नियंत्रक में 5 नेविगेशन नियंत्रक हैं, इसलिए मुझे हर एक रंग को निरीक्षक या कोड से बदलना होगा।

इसलिए मैंने कोड से हर एक नेविगेशन बार को बदलने के बजाय एक वर्ग बनाया, मैं सिर्फ इस वर्ग को असाइन करता हूं और इसने सभी 5 कंट्रोलर कोड का उपयोग किया है। आपको बस इस क्लास को प्रत्येक कंट्रोलर को असाइन करना है और इसे thats।

import UIKit

   class NabigationBar: UINavigationBar {
      required init?(coder aDecoder: NSCoder) {
       super.init(coder: aDecoder)
    commonFeatures()
 }

   func commonFeatures() {

    self.backgroundColor = UIColor.white;
      UINavigationBar.appearance().titleTextAttributes =     [NSAttributedStringKey.foregroundColor:ColorConstants.orangeTextColor]

 }


  }

2

iOS 10 स्विफ्ट 3.0

आप के लिए उपयोग तेजी से चौखटे तो हमें कोई आपत्ति नहीं है UINeraida के रूप में परिवर्तन नेविगेशन पृष्ठभूमि करने के लिए UIColorया HexColorया UIImageऔर परिवर्तन वापस नेविगेशन बटन पाठ प्रोग्राम पूरा forground पाठ का रंग बदल जाते हैं।

के लिये UINavigationBar

    neraida.navigation.background.color.hexColor("54ad00", isTranslucent: false, viewController: self)
    
    //Change navigation title, backbutton colour
    
    neraida.navigation.foreground.color.uiColor(UIColor.white, viewController: self)
    
    //Change navigation back button title programmatically
    
    neraida.navigation.foreground.backButtonTitle("Custom Title", ViewController: self)
    
    //Apply Background Image to the UINavigationBar
    
    neraida.navigation.background.image("background", edge: (0,0,0,0), barMetrics: .default, isTranslucent: false, viewController: self)

2

स्विफ्ट 3

सरल एक लाइनर जिसे आप उपयोग कर सकते हैं ViewDidLoad()

//Change Color
    self.navigationController?.navigationBar.barTintColor = UIColor.red
//Change Text Color
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

2

यह संस्करण नेविगेशन बार के तहत 1px छाया रेखा को भी हटाता है:

स्विफ्ट 5: इसे अपने AppDelegate didFinishLaunchingWithOptions में रखें

UINavigationBar.appearance().barTintColor = UIColor.black
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UINavigationBar.appearance().shadowImage = UIImage()

1

मुझे करना था

UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().barStyle = .Black
UINavigationBar.appearance().backgroundColor = UIColor.blueColor()

अन्यथा पृष्ठभूमि का रंग नहीं बदलेगा


1

वांछित रंग प्राप्त करने के लिए पहले नेविगेशनबेर की समसामयिक संपत्ति को गलत पर सेट करें। फिर नेविगेशनबार रंग को इस तरह बदलें:

@IBOutlet var NavigationBar: UINavigationBar!

NavigationBar.isTranslucent = false
NavigationBar.barTintColor = UIColor (red: 117/255, green: 23/255, blue: 49/255, alpha: 1.0)

1

.Normal के लिए बटन स्थिति सेट करना सुनिश्चित करें

extension UINavigationBar {

    func makeContent(color: UIColor) {
        let attributes: [NSAttributedString.Key: Any]? = [.foregroundColor: color]

        self.titleTextAttributes = attributes
        self.topItem?.leftBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)
        self.topItem?.rightBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)
    }
}

PS iOS 12, Xcode 10.1


1
धन्यवाद। मैं इस topItemसमाधान के लिए घंटों खोज रहा हूं । यह उन परिवर्तनों की संख्या को दर्शाता है जो Apple ने जारी रखा है कि कैसे नेविगेशन में शैलियों को लागू किया जाता है।
एप देव गाइ

1

बस इस एक्सटेंशन को कॉल करें और रंग को पास करें यह स्वचालित रूप से नौसेना बार के रंग को बदल देगा

extension UINavigationController {

     func setNavigationBarColor(color : UIColor){
            self.navigationBar.barTintColor = color
        }
    }

व्यू लोड या व्यूविल में कॉल दिखाई देती है

self.navigationController ?set .NavigationBarColor (रंग: <# T ## UIColor #>)


1

AppDelegate में यह कोशिश करें:

//MARK:- ~~~~~~~~~~setupApplicationUIAppearance Method
func setupApplicationUIAppearance() {

    UIApplication.shared.statusBarView?.backgroundColor = UIColor.clear

    var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    UINavigationBar.appearance().barTintColor =  UIColor.white
    UINavigationBar.appearance().isTranslucent = false

    let attributes: [NSAttributedString.Key: AnyObject]

    if DeviceType.IS_IPAD{
        attributes = [
            NSAttributedString.Key.foregroundColor: UIColor.white,
            NSAttributedString.Key.font: UIFont(name: "HelveticaNeue", size: 30)
            ] as [NSAttributedString.Key : AnyObject]
    }else{
        attributes = [
            NSAttributedString.Key.foregroundColor: UIColor.white
        ]
    }
    UINavigationBar.appearance().titleTextAttributes = attributes
}

iOS 13

func setupNavigationBar() {
    //        if #available(iOS 13, *) {
    //            let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
    //            let statusBar = UIView(frame: window?.windowScene?.statusBarManager?.statusBarFrame ?? CGRect.zero)
    //            statusBar.backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1) //UIColor.init(hexString: "#002856")
    //            //statusBar.tintColor = UIColor.init(hexString: "#002856")
    //            window?.addSubview(statusBar)
    //            UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    //            UINavigationBar.appearance().barTintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    //            UINavigationBar.appearance().isTranslucent = false
    //            UINavigationBar.appearance().backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1)
    //            UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
    //        }
    //        else
    //        {
    UIApplication.shared.statusBarView?.backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1)
    UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    UINavigationBar.appearance().barTintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    UINavigationBar.appearance().isTranslucent = false
    UINavigationBar.appearance().backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1)
    UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
    //        }
}

एक्सटेंशन

extension UIApplication {

var statusBarView: UIView? {
    if responds(to: Selector(("statusBar"))) {
        return value(forKey: "statusBar") as? UIView
    }
    return nil
}}

1

मैं यह उन लोगों के लिए लिख रहा हूं जिनके पास अभी भी यहां समाधान के साथ समस्याएं हैं।

मैं Xcode संस्करण 11.4 (11E146) का उपयोग कर रहा हूं। मेरे लिए काम करने वाला एक है:

navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.tintColor = UIColor.black

लेकिन !, यदि आप स्टोरीबोर्ड में बार-बारटंकर को "डिफ़ॉल्ट" के अलावा किसी अन्य मान पर सेट करते हैं, तो कोड की इस 2 पंक्तियों का कोई प्रभाव नहीं पड़ेगा।

इसलिए, केयरफुल बनें और स्टोरीबोर्ड में डिफॉल्ट बार टिंटकलर पर वापस जाएं। ओह Apple ...


अभी भी एक ही समस्या टिंट रंग को डिफ़ॉल्ट में बदलने के बावजूद :(
marika.daboja

@ marika.daboja स्टोरीबोर्ड में आपके सभी नेविगेशन नियंत्रक डिफ़ॉल्ट रंगों पर सेट हैं?
टॉमस कॉर्डोबा

नमस्ते, मेरे पास केवल 1 नेविगेशन नियंत्रक (प्लस 2 तालिका दृश्य नियंत्रक) है। नेविगेशन कंट्रोलर बार टिंट रंग 'डिफ़ॉल्ट' पर सेट है। कोड मैं इस रंग को अद्यतन करने के लिए लगता है इस पर कोई प्रभाव नहीं है।
marika.daboja

@ marika.daboja सुनिश्चित करें कि आप नेविगेशनकंट्रोलर शून्य नहीं है। और यह कि आपने कोड की इस पंक्तियों को व्यूडलड ()
टॉमस कॉर्डोबा

0

अपने AppDelegate के अंदर इन पंक्तियों को जोड़ दें

यह लाइन आपके नेविगेशन बार बैकग्राउंड के लिए है।

UINavigationBar.appearance().barTintColor = .orange

यह लाइन है यदि आपका नहीं है तो यह गलत है तो यह नेविगेशन पर सफेद रंग दिखाएगा।

UINavigationBar.appearance().tintColor = .white

यह पंक्ति नेविगेशन पट्टी पर आपके पाठ और आइकन के लिए है

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: Styles.textFirstColor]

यह पंक्ति हमें आपके नेविगेशन बार में सब कुछ नीचे लाने के लिए है।

UINavigationBar.appearance().isTranslucent = false
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.