IOS 8 में नेवीगेशन बार, टिंट और टाइटल टेक्स्ट कलर


177

स्टेटस बार में बैकग्राउंड टेक्स्ट अभी भी ब्लैक है। मैं रंग को सफेद में कैसे बदलूं?

// io8, swift, Xcode 6.0.1 
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]

}

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

जवाबों:


312

में AppDelegate.swift, application(_:didFinishLaunchingWithOptions:)मैं निम्नलिखित डाल:

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

(स्विफ्ट 4 के लिए या पहले के NSAttributedStringKeyबजाय उपयोग के लिए NSAttributedString.Key)

के लिए titleTextAttributes, डॉक्स कहते हैं:

आप पाठ विशेषता शब्दकोश में शीर्षक के लिए फ़ॉन्ट, पाठ रंग, पाठ छाया रंग और पाठ छाया ऑफसेट निर्दिष्ट कर सकते हैं


6
क्या होगा यदि हमारे पास म्यूटेशन नेविगेशन बार हैं?
सुमित

6
tintColor Xcode 7.3.1 के लिए काम नहीं करता है। पाठ अभी भी काला है।
त्रिवेणी

1
Xcode 8.2 में, टाइटल टेक्सटाइंट्स स्वत: पूर्ण नहीं है, लेकिन यह काम करता है।
OKysabeni

क्या BarTintColor अभी भी आवश्यक है? उस लाइन को हटाना अभी भी काम करता है
rgkobashi

122

मुझे एलेक्स का जवाब पसंद है। यदि आप चाहते ViewControllerहैं कि आप सुनिश्चित करें कि आप उपयोग करना चाहते हैं

viewWillAppear()
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    var nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.Black
    nav?.tintColor = UIColor.white
    nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
    //nav?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange] // swift 4.2
}

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


लेकिन मैं iso 8.1 का उपयोग कर रहा हूं
Saorikido

1
क्यों देखें मैं इसे देखने में कर रहा हूँडायलोड और यह ठीक काम करता है।
एडम जॉन्स

4
क्योंकि हर बार जब आप UIView को देखते हैं तो आप इसे सेट करना चाहेंगे। यदि आप UDabBar व्यू में viewDidLoad () कहते हैं, तो दूसरे टैब पर जाएं जहां इसे फिर से सेट किया गया है, फिर वापस आएं, यह ओवरराइट हो जाएगा क्योंकि मूल दृश्य केवल एक बार लोड किया गया था।
फ्रैक्टलडॉक्टर

2
स्विफ्ट 4 के लिए अपडेट - NSForegroundColorAttributeNameअब होना चाहिएNSAttributedStringKey.foregroundColor
एलन स्कार्पा

3
स्विफ्ट 4.2 के लिए अद्यतन: NSAttributedString.Key.foregroundColorइसके बजायNSForegroundColorAttributeName
स्टीफन पेकेट

81

सार्वभौमिक रूप से रंग बदलने के लिए, इस कोड को NavigationController's viewDidLoadफ़ंक्शन में बैठना चाहिए :

class NavigationController: UINavigationController, UIViewControllerTransitioningDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Status bar white font
        self.navigationBar.barStyle = UIBarStyle.Black
        self.navigationBar.tintColor = UIColor.whiteColor()
    }
}

इसे बदलने के लिए प्रति ViewControllerआप संदर्भ के लिए होता है NavigationControllerसे ViewControllerहै कि में और इसी तरह की लाइनों लिखने ViewControllerके viewWillAppearकार्य करते हैं।


इन विधियों का उपयोग करने के लिए मैं नेविगेशनकंट्रोलर को कैसे ओवरराइड करूं?
एजी 1

आप नेविगेशनकंट्रोलर को ओवरराइड नहीं करते हैं, आप बस इसे ViewDidLoad फ़ंक्शन में संशोधित करते हैं। मैंने अपना उत्तर अपडेट कर दिया।
एलेक्स

1
तो एक डेवलपर को कार्यक्षेत्र के लिए केवल नेविगेशनकंट्रोलर.विस्फ़ट जोड़ना होगा? यदि ऐसा है तो साफ है!
एजी

5
@ AG1 यह गलत है, सिर्फ एक नई फाइल को जोड़ने के लिए NavigationController.swift पर्याप्त नहीं है, आपको स्टोरीबोर्ड में अपने नेविगेशन नियंत्रक को इस इंस्पेक्टर इंस्पेक्टर में इस फाइल को हुक करना होगा क्योंकि डिफ़ॉल्ट रूप से यह एक सामान्य UINavontController का उपयोग करेगा।
काकूबाई

2
आप केवल कस्टम नेविगेशन नियंत्रक बनाने के लिए स्टोरीबोर्ड w / आउट में यह सब कर सकते हैं। बार टाइन और स्टाइल के गुण गुण निरीक्षक के नीचे दाईं ओर हैं।
मार्कमार्क

31

स्विफ्ट 5

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

स्विफ्ट 4

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

2
मुझे मिलता है: टाइप 'NSAttributedStringKey' (उर्फ 'NSString') का कोई सदस्य 'अग्रभूमि' नहीं है
अल्फई

?: नवीनतम संस्करण xcode 10 और तेज 4.2 self.navigationController .navigationBar.titleTextAttributes = [UIColor.white NSAttributedString.Key.foregroundColor] के लिए नीचे दिए गए कोड का उपयोग करें
Bhavsang जाम

16

उद्देश्य- c में काम करने के लिए मुझे viewWillAppearअपने CustomViewController में निम्नलिखित पंक्तियाँ डालनी होंगी।

[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
[self.navigationController.navigationBar setTranslucent:NO];

के लिए Swift2.x इस काम करता है:

self.navigationController?.navigationBar.barTintColor = UIColor.redColor()

के लिए Swift3.x इस काम करता है:

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

लेकिन जब मैं दूसरे व्यू कॉन्ट्रॉलर के पास जाता हूं तो रंग भी बदल जाता है। इसे रोकने के बारे में कोई विचार। मैं चाहता हूं कि मेरा मुख्य दृश्य एक रंग और दूसरा एक और हो।
user3163404

1
मुझे लगता है कि आपको अपने नए व्यू कंट्रोलर में भी रंग सेट करना होगा।
निको क्लॉन्जित्जर

13

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

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

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

    @IBInspectable var tintColor: UIColor? {
        set {
            navigationBar.tintColor = newValue
        }
        get {
            guard  let color = navigationBar.tintColor else { return nil }
            return color
        }
    }

    @IBInspectable var titleColor: UIColor? {
        set {
            guard let color = newValue else { return }
            navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: color]
        }
        get {
            return navigationBar.titleTextAttributes?["NSForegroundColorAttributeName"] as? UIColor
        }
    }
}

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

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


7

यदि आप पूरे ऐप के लिए टिंट रंग और बार रंग सेट करना चाहते हैं, तो निम्न कोड AppDelegate में जोड़ा जा सकता है।

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

    var navigationBarAppearace = UINavigationBar.appearance()

    navigationBarAppearace.tintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
    navigationBarAppearace.barTintColor = UIColor(red:0.76, green:0.40, blue:0.40, alpha:1.0)
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    return true
`

नेविगेशन बार टिंटकलर और टिंटकलर सेट है


6

स्विफ्ट 4 से अपडेट किया गया

override func viewDidLoad() {
    super.viewDidLoad()
        self.navigationController?.navigationBar.tintColor = UIColor.blue
        self.navigationController?.navigationBar.barStyle = UIBarStyle.black
}

6

स्विफ्ट 5 और एक्सकोड 10 में

self.navigationItem.title = "your name"
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
navigationController?.navigationBar.titleTextAttributes = textAttributes

हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
31piy

4

अल्बर्ट के उत्तर का स्विफ्ट 4.2 संस्करण-

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.white]

मुझे वास्तव में पसंद आया कि आपने इस उत्तर को कैसे जोड़ा। .barTintColor अब एक विकल्प नहीं है। क्या आपका मतलब है .backgroundColor?
बेन

4

स्विफ्ट संस्करण 4.2 में सफेद करने के लिए नेविगेशन बार शीर्षक का पाठ रंग सेट करना:

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

3

स्विफ्ट 4

override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.navigationBar.barTintColor = UIColor.orange
    navigationController?.navigationBar.tintColor = UIColor.white
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}

3

स्विफ्ट 4.1

ViewDidLoad में एक फंक जोड़ें

override func viewDidLoad() {
  super.viewDidLoad()

  setup()
}   

में setup()समारोह जोड़ने:

func setup() {

        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationBar.barStyle = .blackOpaque
        navigationItem.title = "YOUR_TITLE_HERE"
        navigationController?.navigationBar.barTintColor = .black
        let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
        navigationController?.navigationBar.largeTitleTextAttributes = attributes
    }

1

कस्टम रंग के लिए करने के लिए TitleTextपर NavigationBarएक सरल और स्विफ्ट 3 के लिए शॉर्ट कोड यहाँ,:

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

या

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName :UIColor.white]

1

स्विफ्ट में 4.2

var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Black
nav?.tintColor = UIColor.white
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

1

स्विफ्ट 3.2 के माध्यम से स्विफ्ट करें (स्विफ्ट 4.0 नहीं)

    self.navigationController?.navigationItem.largeTitleDisplayMode = .always
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

    // unconfirmed but I assume this works:
    self.navigationController?.navigationBar.barTintColor = UIColor.white
    self.navigationController?.navigationBar.barStyle = UIBarStyle.black

0

स्विफ्ट 3 में यह काम करता है:

navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]

0

स्विफ्ट 5.1

केवल कॉपी और पेस्ट करें ViewDidLoad()और अपनी आवश्यकता के अनुसार इसका आकार बदलें। कॉपी और पेस्ट करने से पहले स्क्रीन के ऊपर नेविगेशन बार जोड़ें।

navigationController?.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont(name: "TitilliumWeb-Bold.ttf", size: 16.0)!, NSAttributedString.Key.foregroundColor: UIColor.white]

यदि यह काम नहीं करता है, तो आप केवल इसके पाठ का रंग बदलने के लिए प्रयास कर सकते हैं

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.