नेविगेशन बार में बैक बटन का रंग बदलें


193

मैं सेटिंग बटन का रंग बदलकर सफेद करने की कोशिश कर रहा हूं, लेकिन इसे बदलने के लिए नहीं मिल सकता।

मैंने इन दोनों को आज़माया है:

navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()

लेकिन कोई बदलाव नहीं, यह अभी भी इस तरह दिखता है:

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

मैं उस बटन को सफेद कैसे बनाऊं?

जवाबों:


283

आप बोर्ड पर एक खाली जगह पर क्लिक करके अपने स्टोरीबोर्ड में वैश्विक टिंट रंग को बदल सकते हैं और सही टूलबार "फ़ाइल निरीक्षक दिखाएं" का चयन करें, और आप टूलबार के नीचे "ग्लोबल टिंट" विकल्प देखेंगे।

स्टोरीबोर्ड में ग्लोबल टिंट विकल्प


7
वाह .. अच्छा लगा !. क्या आप जानते हैं कि इस प्रोग्राम को कैसे करना है?
पॉल लेहॅन

10
शानदार खोज, लेकिन ग्लोबल टिंट को सफ़ेद (मूल प्रश्न के अनुसार) में बदलने से टेबल व्यू डिटेल डिस्क्लोजर इंडीकेटर्स जैसी चीज़ें भी बदल जाएंगी, जो उन्हें प्रश्न में तालिका में अदृश्य बना देंगी।
माइक फिशर

1
माइक के मुद्दों को जोड़ना: यह नियंत्रण आपके सभी टेक्स्ट बटन को भी इस रंग का बनाता है और इसलिए आपको या तो उन्हें हाथ से एक रंग में सेट करना होगा (अर्थात कोई डिफ़ॉल्ट रंग स्पष्ट रूप से नहीं) या बस एक अलग विधि का उपयोग करें।
सायरन

4
हालांकि यह एक त्वरित और आसान फिक्स है, यह अन्य समस्याओं की ओर जाता है यदि रंग सफेद है / पृष्ठभूमि से मेल खाता है। यदि आपके पास पाठ फ़ील्ड हैं, तो यह कर्सर को ध्यान नहीं देता है, जो उपयोगकर्ता को ऐसा दिखता है जैसे कि वे पाठ फ़ील्ड पर लिखने में सक्षम नहीं हैं क्योंकि कर्सर दिखाई नहीं देता है।
जोस रामिरेज़

5
@PaLLehn इस प्रोग्राम को करने के लिए, AppDelegate.swift > application(application:didFinishLaunchingWithOptions:)आप यह लिख सकते हैं:self.window!.tintColor = .yourColor
mmika1000

206

यह कोड तीर का रंग बदलता है

self.navigationController.navigationBar.tintColor = UIColor.whiteColor();

यदि यह काम नहीं करता है, तो नीचे दिए गए कोड का उपयोग करें:

self.navigationBar.barStyle = UIBarStyle.Black
self.navigationBar.tintColor = UIColor.whiteColor()

स्विफ्ट 3 नोट्स

UIColor.whiteColor() और इसी तरह का सरलीकरण किया गया है UIColor.white

इसके अलावा, कई पहले निहित विकल्पों को स्पष्ट करने के लिए बदल दिया गया है, इसलिए आपको आवश्यकता हो सकती है:

self.navigationController?.navigationBar =

7
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()मेरे लिए काम किया (स्विफ्ट 2.2)
माइक फिशर

self.navigationBar.barStyle = UIBarStyle.Black self.navigationBar.tintColor = UIColor.whiteColor () मेरे लिए काम किया (स्विफ्ट 3)
अजय .km

क्या आप बता सकते हैं कि UIBarStyle.Black का उपयोग क्यों करें?
mmika1000

कृपया अपडेट करें: self.navigationController; .navigationBar.tintColor =
mohonish

1
यह केवल तीर को बदल देता है, बैक टेक्स्ट अभी भी Xcode 11 में समान है
jeff ayan


55

आपको इसका उपयोग करना चाहिए:

navigationController?.navigationBar.barTintColor = .purple
navigationController?.navigationBar.tintColor = .white

इससे बटन सफेद हो गया, लेकिन पृष्ठभूमि का रंग बहुत हल्का हो गया। क्या आप जानते हैं कि बार की पृष्ठभूमि को फिर से अपना पूरा रंग कैसे दिया जाए?
ब्रैंडन इवांस

यह सही जवाब है। यह BarTintColor और शीर्षक / बार बटन को सफ़ेद करके बार को बैंगनी बना देगा।
ज़रीन

35

तीव्र

 override func viewDidLoad() {
     super.viewDidLoad()

 self.navigationController?.navigationBar.tintColor = UIColor.white
 }

1
स्विफ्ट 3. में उपयोग करें
दीपक तगाड़िया

मुझे यह भी बताएं कि आप किस स्विफ्ट संस्करण का उपयोग कर सकते हैं?
दीपक तगाड़िया

और इस कोड को प्रोजेक्ट में लिखने के लिए कौन सी क्लास / फाइल / वीसी?
दीपक तगाड़िया

फ़ंक्शन की शुरुआत में setCloseButton () जिसे viewWillAppear पर कहा जाता है।
जयप्रकाश दुबे

NextViewController.swift फ़ाइल में लिखें, viewDidLoad () में भी लिखें।
दीपक तगाडिय़ा

20

आप इस तरह का उपयोग कर सकते हैं। इसे अंदर रखें AppDelegate.swift

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

        UINavigationBar.appearance().translucent = false
        UINavigationBar.appearance().barTintColor = UIColor(rgba: "#2c8eb5")
        UINavigationBar.appearance().tintColor = UIColor.whiteColor()
        UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]

        return true
    }

20

स्विफ्ट 4.2

पूरा ऐप थीम बदलें

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

        UINavigationBar.appearance().tintColor = .white

        return true
    }

विशिष्ट नियंत्रक बदलें

let navController = UINavigationController.init(rootViewController: yourViewController) 
navController.navigationBar.tintColor = .red

present(navController, animated: true, completion: nil)

यह सभी एप्लिकेशन के लिए रंग बदलता है। क्या होगा अगर मुझे इसे विशेष स्क्रीन / विशेष के लिए बदलने की आवश्यकता है UINavigationController?
व्याचेस्लाव गेर्चिकोव

यदि आप विशिष्ट नियंत्रक बदलना चाहते हैं, तो @VyachaslavGerchicov उपरोक्त उत्तर पूर्ण ऐप थीम के लिए है। कुछ इस तरह से करें: navController = UINavigationController.init (rootViewController: yourViewController) navController.navigationBar.tintColor =
.red

यदि आप iOS 13 पर हैं, तो आपने अब तक का उपयोग नहीं किया है, अब यह SceneDelegate में ले जाया गया।
JBarros35

15

में Swift3 , करने के लिए वापस बटन सेट red

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

यह नेविगेशन बार सेट करेगा, बार बटन आइटम नहीं
carlodonz

1
हां, यह सवाल था।
विन्सेन्ट

" नेविगेशन बार में बैक बटन का रंग बदलें "
carlodonz

यह एकमात्र तरीका था जिसने मेरे लिए काम किया। अभी Apple के कार्यान्वयन के साथ कुछ टूटा हुआ लगता है ...
डेव वाई

13

स्विफ्ट 4 में, आप इस समस्या का ध्यान रख सकते हैं:

let navStyles = UINavigationBar.appearance()
// This will set the color of the text for the back buttons.
navStyles.tintColor = .white
// This will set the background color for navBar
navStyles.barTintColor = .black

8

स्विफ्ट 3

स्विफ्ट 3 के लिए सबसे उत्कीर्ण उत्तर सही नहीं है।

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

रंग बदलने का सही कोड है:

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

यदि आप रंग बदलना चाहते हैं, तो UIColor.white को वांछित रंग में बदलें


यह एकमात्र तरीका था जिसने मेरे लिए काम किया। अभी Apple के कार्यान्वयन के साथ कुछ टूटा हुआ लगता है ...
डेव वाई

7

UINavigationBar.appearance().tintColorएप्पल के प्रलेखन के साथ संघर्ष स्थापित करने वाले सभी उत्तर UIAppearance.h

IOS7 के लिए नोट: iOS7 पर tintColorसंपत्ति को स्थानांतरित कर दिया गया है UIView, और अब इसमें वर्णित विशेष विरासत वाला व्यवहार है UIView.h। यह अंतर्निहित व्यवहार उपस्थिति प्रॉक्सी के साथ संघर्ष कर सकता है, और इसलिए tintColorअब उपस्थिति प्रॉक्सी के साथ अस्वीकृत है।

Xcode में, आपको उस प्रत्येक प्रॉपर्टी पर कमांड-क्लिक करना होगा, जिसे आप हेडर फाइल का निरीक्षण करने के लिए उपस्थिति प्रॉक्सी के साथ उपयोग करना चाहते हैं और सुनिश्चित करें कि प्रॉपर्टी के साथ एनोटेट किया गया है UI_APPEARANCE_SELECTOR

तो नेविगेशन बार जामुनी और शीर्षक और बटन को सफेद करने का सही तरीका है, एप्लिकेशन के माध्यम से उपस्थिति प्रॉक्सी के माध्यम से सफ़ेद होना:

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

ध्यान दें कि UIBarButtonItemएक उपवर्ग नहीं है UIView, बल्कि NSObject। इसलिए इसकी tintColorसंपत्ति विरासत में नहीं मिली tintColorहैUIView

दुर्भाग्य से, UIBarButtonItem.tintColorइसके साथ एनोटेट नहीं है UI_APPEARANCE_SELECTOR- लेकिन यह मुझे एक दस्तावेज बग लगता है। इस रडार में Apple इंजीनियरिंग की प्रतिक्रिया का समर्थन किया गया है।


UINavigationBar.appearance ()। बड़े-बड़ेTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] // भी
गुइलहर्मा


6

इस कोड को AppDelegateकक्षा में, के अंदर उपयोग करें didFinishLaunchingWithOptions

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

UINavigationBar.appearance().tintColor = .white

}

4

इस कोड को आजमाएं:

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

    let navigationBarAppearace = UINavigationBar.appearance()
    navigationBarAppearace.tintColor = UIColor.whiteColor()  // Back buttons and such
    navigationBarAppearace.barTintColor = UIColor.purpleColor()  // Bar's background color
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]  // Title's text color

    self.window?.backgroundColor = UIColor.whiteColor()
    return true
}

बहुत बहुत धन्यवाद, श्रीमान
अर्पित बी पारेख


4

यदि आपके पास पहले से ही आपके "सेटिंग" दृश्य नियंत्रक में पिछला बटन है और आप "भुगतान सूचना" दृश्य नियंत्रक पर वापस बटन का रंग किसी और चीज़ में बदलना चाहते हैं, तो आप इसे "सेटिंग" दृश्य नियंत्रक की तैयारी के लिए इस तरह से कर सकते हैं :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "YourPaymentInformationSegue"
    {
        //Make the back button for "Payment Information" gray:
        self.navigationItem.backBarButtonItem?.tintColor = UIColor.gray               
    }
}

3
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

यह मेरे लिए, iOS 9.0+ काम करता है


2

AppDelegate.swift में didFinishLaunchingWithOptions फ़ंक्शन के लिए निम्न कोड जोड़ें

var navigationBarAppearace = UINavigationBar.appearance()

navigationBarAppearace.tintColor = uicolorFromHex(0xffffff) // White color
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517) // Green shade

// change navigation item title color
navigationBarAppearace.titleTextAttributes =[NSForegroundColorAttributeName:UIColor.whiteColor()]

यह कोड मुझे निम्नलिखित त्रुटि देता है: "अनसुलझे पहचानकर्ता का उपयोग 'uicolorFromHex'" क्या कोई मुझे हल करने में मदद कर सकता है?
jonathan3087

शायद UIColor के लिए एक विस्तार। आप एक्सटेंशन बनाने के लिए स्टैकओवरफ़्लो खोज सकते हैं।
KvdLingen

2

स्विफ्ट 2.0 के लिए, नेविगेशन-बार टिंट रंग बदलने के लिए , AppDelegate.swift में निम्नलिखित का उपयोग करके शीर्षक टेक्स्ट और बैक बटन टिंट रंग बदल गया

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

  // Override point for customization after application launch.


    //Navigation bar tint color change

    UINavigationBar.appearance().barTintColor = UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 0.5)

    //Back button tint color change

    UINavigationBar.appearance().barStyle = UIBarStyle.Default
    UINavigationBar.appearance().tintColor =  UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1)

    //Navigation Menu font tint color change

    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1), NSFontAttributeName: UIFont(name: "OpenSans-Bold", size: 25)!]//UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 1.0)

    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent


    return true
}

2

यकीन नहीं होता कि किसी ने भी इसका उल्लेख नहीं किया है ... लेकिन मैं बिल्कुल वही कर रहा था जो आप मेरे लिए कर रहे थे viewDidLoad... और यह काम नहीं कर रहा था। फिर मैंने अपना कोड रखाviewWillAppear और यह सब काम कर गया।

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

मूल रूप से स्वयं का उपयोग करके कक्षा में appearance()बदलना आपके ऐप में उस दृश्य के सभी उदाहरणों पर वैश्विक परिवर्तन करने जैसा है। अधिक जानकारी के लिए यहां देखें


1

आपके पास एक विकल्प है कि आप अपने बैक बटन को छिपाएं और इसे अपने स्वयं के साथ बनाएं। फिर उसका रंग सेट करें।

मैंने वह किया:

self.navigationItem.setHidesBackButton(true, animated: true)
let backbtn = UIBarButtonItem(title: "Back", style:UIBarButtonItemStyle.Plain, target: self, action: "backTapped:")
self.navigationItem.leftBarButtonItem = backbtn
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.grayColor()

1
सवाल विशेष रूप से बाईं नेविगेशन आइटम को स्टाइल करने के आसपास था और यह सीधे सवाल का जवाब देने के सबसे करीब है।
शिल्प

0

इसे इस लाइन के साथ हल किया जाएगा - (शून्य) viewDidLoad:

self.navigationItem.backBarButtonItem.tintColor = UIColor.whiteColor;

(lldb) p self.navigationItem.backBarButtonItem (UIBarButtonItem *) $9 = nil (lldb)
dengApro

0

आपको इस लाइन को जोड़ना चाहिए

 self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black

0

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

यहाँ मेरा समाधान है


class AppNavigationController : UINavigationController {

  override func viewDidLoad() {
    super.viewDidLoad()
    self.delegate = self
  }

  override func viewWillAppear(_ animated: Bool) {

  }

}
extension AppNavigationController : UINavigationControllerDelegate {

  func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    let backButtonItem = UIBarButtonItem(
      title: "   ",
      style: UIBarButtonItem.Style.plain,
      target: nil,
      action: nil)
    backButtonItem.tintColor = UIColor.gray
    viewController.navigationItem.backBarButtonItem = backButtonItem
  }

  func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {

  }

}

इसके अलावा, आपको Apple Api के साथ गड़बड़ करने की आवश्यकता नहीं है जैसे EKEventEditViewController , PickerViewController और इसी तरह यदि आप वैश्विक सेटिंग यूआई का उपयोग करते हैंUIBarButtonItem.appearance().tintColor = .white


0
    self.navigationController?.navigationBar.tintColor = UIColor.black // to change the all text color in navigation bar or navigation 
    self.navigationController?.navigationBar.barTintColor = UIColor.white // change the navigation background color
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.black] // To change only navigation bar title text color
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.