कैसे AppDelegate से UINavigationBar पृष्ठभूमि रंग बदलने के लिए


90

मुझे पता है कि किस तरह से UINavigationBarबैकग्राउंड इमेज को बदलना है

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];

और मुझे पता है कि प्रत्येक के भीतर अलग-अलग रंगों में बार कैसे सेट किया जाता है Views..... अब मैं एक छवि को ठोस रंग से उपयोग किए बिना पृष्ठभूमि का रंग बदलना चाहता हूं app delegate। मैं इसे हर बार प्रत्येक दृश्य से सेट नहीं करना चाहता और मैं लिखना नहीं चाहता CGRect

मैंने कोशिश की, [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];लेकिन मैं काम नहीं करता और मुझे कहीं भी एक कोड नहीं मिला जो ऐप के प्रतिनिधि में काम करता हो।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

जवाबों:


202

आप उपयोग कर सकते हैं [[UINavigationBar appearance] setTintColor:myColor];

IOS 7 के बाद से आपको सेट करने की जरूरत है [[UINavigationBar appearance] setBarTintColor:myColor];और यह भी [[UINavigationBar appearance] setTranslucent:NO]

[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];

धन्यवाद, क्या आप जानते हैं कि सफेद डिफ़ॉल्ट ढाल को कैसे निकालना है जो इसे एक ठोस रंग बनाने के लिए ऊपर से आता है?
जोनाथन थर्फ्ट

1
के साथ tintColorढाल रहेगा। यदि आप इस ग्रेडिएंट को नहीं चाहते हैं, तो आपको अपने UINavigationBar को उप-लिंक करने या उपस्थिति के लिए UIImage बनाने की आवश्यकता है।
सेब थिबॉड

59
iOS 7 पर जो काम नहीं किया, मुझे इस्तेमाल करना पड़ाnavigationBar.barTintColor = myColor;
Juan de la Torre

4
translucentसंपत्ति अभी iOS 6 और iOS 7 में UIAppearance का उपयोग करके सेट नहीं की जा सकती है। इसलिए [[UINavigationBar appearance] setTranslucent:NO]एप्लिकेशन को NSInvalidArgumentExceptionत्रुटि से क्रैश कर देगा । [self.navigationController.navigationBar setTranslucent:NO]आईबी का उपयोग करके पारदर्शिता का उपयोग करें या रद्द करें ।
सैम

1
स्विफ्ट संस्करण: UINavigationBar.appearance().barTintColor = myColor UINavigationBar.appearance().isTranslucent = false
fl034

103

पृष्ठभूमि का रंग बदलने के लिए और टिंट कोड के निम्नलिखित टुकड़े को काम नहीं करेगा:

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

3
यह स्वीकृत उत्तर होना चाहिए, iOS7 के लिए पूरी तरह से काम करता है।
joshuahornby10

IOS 7 के लिए सही उत्तर। मेरे लिए काम करना।
लंदनगू

पारभासी इस काम को करने की आवश्यकता है। जैसा कि स्वीकृत उत्तर में यह शामिल नहीं है, यह स्वीकृत उत्तर होना चाहिए।
ट्रिस्टन वार्नर-स्मिथ

3
बस स्पष्ट करने के लिए, स्वीकृत उत्तर AppDelegate के लिए है और यह व्यू कंट्रोलर के भीतर है।
डीन

@ डीन सही है। स्वीकृत उत्तर नए बनाए गए के लिए प्रभावी होंगे UIViewControllers, जबकि यह जब भी कहा जाएगा प्रभाव दिखाएगा।
आर्मुस


15

स्विफ्ट सिंटैक्स:

    UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color

मैं बस डाल दिया कि AppDelegate didFinishLaunchingWithOptions में और यह पूरे ऐप में बनी रहती है


8

स्विफ्ट :

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

6

इसे आप Xcode 6.3.1 के साथ आसानी से कर सकते हैं। दस्तावेज़ रूपरेखा में अपना नेविगेशनबार चुनें। गुण निरीक्षक का चयन करें। अनचाहा अनुवाद। अपने वांछित रंग में बार टिंट सेट करें। किया हुआ!


धन्यवाद, मुझे ओब्जेक और स्विफ्ट में यह करने के लिए बहुत सारे संदर्भ मिले, लेकिन किसी ने आईबी में इसके उपलब्ध होने का उल्लेख नहीं किया
निक

3

जैसा कि अन्य उत्तर उल्लेख करते हैं, आप उपयोग कर सकते हैं setTintColor:, लेकिन आप एक ठोस रंग चाहते हैं और टिंट रंग AFAIK की स्थापना करना संभव नहीं है।

इसका समाधान यह है कि प्रोग्राम को प्रोग्रामेटिक रूप से बनाएं और उस इमेज को बैकग्राउंड इमेज के रूप में सभी नेविगेशन बार के लिए सेट करें UIAppearance। छवि के आकार के बारे में, मुझे यकीन नहीं है कि अगर 1x1 पिक्सेल की छवि काम करेगी या यदि आपको नेविगेशन बार के सटीक आकार की आवश्यकता है, तो इस सवाल का दूसरा जवाब देखें कि छवि कैसे बनाई जाए।

एक सलाह के रूप में, मुझे इस प्रकार की चीजों के साथ एप्लिकेशन को "अधिभार" देना पसंद नहीं है। मैं जो करना चाहता हूं वह AppearanceConfigurationकेवल एक सार्वजनिक पद्धति से नामित एक वर्ग बनाने के लिए है, configureAppearanceजहां मैं अपने द्वारा वांछित सभी UIAppearance सामान सेट करता हूं, और फिर मैं उस पद्धति को ऐप प्रतिनिधि से कॉल करता हूं।


2

आप किसी भी दृश्य नियंत्रक में इस कोड का उपयोग करके UINavigation पृष्ठभूमि का रंग सेट कर सकते हैं

self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];

2

स्विफ्ट 4.2 और एक्सकोड 10.1 में

आप अपनी नेविगेशन पट्टी का रंग अपने AppDelegate से सीधे अपनी पूरी परियोजना में बदल सकते हैं।

में didFinishLaunchingWithOptions launchOptions:कोड की लाइनों के लिए नीचे लिखने

UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)

यहाँ

tintColor बैकग्राउंड इमेज जैसे बैक बटन और मेन्यू लाइन्स इमेज आदि सेट करने के लिए है (नीचे बाईं और दाईं मेन्यू इमेज देखें)

barTintColor नेविगेशन बार बैकग्राउंड कलर के लिए है

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

//Add navigation bar colour
navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
navigationController?.navigationBar.tintColor = UIColor.white

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


-1

रंग कोड यहां मुद्दा है। 195/255 का उपयोग करने के बजाय, 0.7647 या 195.f / 255 का उपयोग करें। समस्या यह है कि फ्लोट को ठीक से काम नहीं कर रहा है। सटीक फ्लोट मान का उपयोग करने का प्रयास करें।

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