IOS 7 में नेविगेशन बार का रंग कैसे बदलें?


213

मैं iOS 7 में नेविगेशन बार का रंग कैसे बदल सकता हूँ?

मूल रूप से मैं ट्विटर नव बार (उसके लिए अपडेट किया गया ट्विटर iOS7) जैसा कुछ हासिल करना चाहता हूं । मैं एक नौसेना पट्टी में एक-एक एम्बेडेड view controller। मैं बस इतना चाहता हूं कि सबसे ऊपर उपयोगिता पट्टी के साथ-साथ नौसेना बार के रंग को हल्का नीला में बदलना है। मैं अपने में एक विकल्प खोजने के लिए प्रतीत नहीं कर सकते storyboard



[[UINavigationBar उपस्थिति] setBarTintColor: [UIColor blackColor]]; यह wos 7 से ios पर काम करेगा
चंद्रमणि

1
इस ट्यूटोरियल का पालन करें appcoda.com/customize-navigation-status-bar-ios-7
Chandramani

जवाबों:


319

tintColorIOS 7.0 में बार के लिए व्यवहार बदल गया है। यह अब बार की पृष्ठभूमि को प्रभावित नहीं करता है।

प्रलेखन से:

barTintColor क्लास संदर्भ

नेविगेशन बार पृष्ठभूमि पर लागू करने के लिए टिंट रंग।

@property(nonatomic, retain) UIColor *barTintColor

चर्चा
यह रंग डिफ़ॉल्ट रूप से पारभासी किया जाता है जब तक कि आप पारभासी संपत्ति को सेट नहीं करते हैं NO

उपलब्धता

IOS 7.0 और बाद में उपलब्ध।

UINavigationBar.h में घोषित किया गया

कोड

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    // iOS 7.0 or later   
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO;
}else {
    // iOS 6.1 or earlier
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

हम iOS 7 UI ट्रांज़िशन गाइड में उल्लिखित iOS वर्ज़न को चेक करने के लिए भी इसका उपयोग कर सकते हैं

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // iOS 6.1 or earlier
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    } else {
        // iOS 7.0 or later     
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
        self.navigationController.navigationBar.translucent = NO;
    }

EDIT का उपयोग xib

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


3
लेकिन मैं इस कोड को कहाँ रख सकता हूँ ?? Im इस hahah के लिए बहुत नया। मैंने इसे ऐप के प्रतिनिधि के भीतर रखा और यह वास्तव में बहुत कुछ नहीं करता है। यह हालांकि ठीक बनाता है।
पेट्रीसियो गुएरा

1
इनसाइड व्यू कॉन्ट्रोलर
रजनीश

1
मैं इसे आपके व्यूकंट्रोलर में viewDidLoad में डालूंगा।
एचएलआर

2
अगर (मंजिल (NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) यह बेहतर होगा कि आप जिस iOS संस्करण को चला रहे हैं, उसका परीक्षण करना बेहतर होगा, जैसा कि संक्रमण मार्गदर्शिका में सेब ने कहा है: developer.apple
डेविड थॉम्पसन

1
आप ([self.navigationController.navigationBar respondsToSelector: @selector (setBarTintColor :)) बनाम वर्जन नंबर की जांच कर सकते हैं कि क्या आप बारटेन्करोल सेट कर सकते हैं
SimpsOff

129

पुराने ट्विटर के नव बार लुक को पाने के लिए मूल प्रश्न में क्या किया गया है, यह करना - व्हाइट टेक्स्ट के साथ ब्लू बैकग्राउंड - सिर्फ Xcode में इंटरफ़ेस बिल्डर का उपयोग करना बहुत आसान है।

  • दस्तावेज़ रूपरेखा का उपयोग करते हुए, अपना नेविगेशन बार चुनें।
  • एट्रिब्यूट्स इंस्पेक्टर में, नेविगेशन बार समूह में, डिफ़ॉल्ट से ब्लैक में स्टाइल बदलें। यह नेविगेशन और स्टेटस बार की पृष्ठभूमि का रंग बदलकर काला कर देता है, और उनके पाठ को सफ़ेद कर देता है। तो बैटरी और अन्य आइकन और स्टेटस बार में टेक्स्ट ऐप के चलने पर सफेद दिखाई देगा।
  • उसी नेविगेशन बार समूह में, बार टिंट को अपनी पसंद के रंग में बदलें।
  • यदि आपके पास अपने नेविगेशन बार में बार बटन आइटम हैं, तो वे अभी भी डिफ़ॉल्ट नीले रंग में अपना पाठ दिखाएंगे, इसलिए गुण निरीक्षक, दृश्य समूह में, टिंट को सफेद रंग में बदलें।

जो आपको चाहिए वो आपको मिलना चाहिए। यहाँ एक स्क्रीनशॉट है जो यह देखना आसान बनाता है कि परिवर्तन कहाँ करना है।

आईओएस सिम्युलेटर में परिणाम सहित आवश्यक परिवर्तन कहां करें

ध्यान दें कि केवल बार टिंट को बदलने से नेविगेशन बार या स्टेटस बार में टेक्स्ट का रंग नहीं बदलता है। स्टाइल को भी बदलना होगा।


IOS 9 के लिए काले रंग का चयन किया गया है, एक अपडेट किए गए उत्तर का कोई भी मौका
Rob85

@ Rob85 मैं अभी Xcode के सामने नहीं हूँ, लेकिन जब Xcode 7 (iOS 9 के साथ) जारी किया गया, तो मैंने सत्यापित किया कि ये निर्देश अभी तक अद्यतित थे। सुनिश्चित करें कि नेविगेशन बार चुना गया है, काली शैली नेविगेशन बार के गुण निरीक्षक में होनी चाहिए।
23

2
@ Rob85 मैंने Apple की डेवलपर वेबसाइट और शैलियों की जाँच की है Defaultऔर Blackअभी भी iOS 9 में उपलब्ध हैं । हटाए गए हैं BlackOpaqueऔर BlackTranslucent, जिन्हें Blackस्टाइल और ट्रांसलूसेंट टिक-बॉक्स के संयोजन से बदल दिया गया है । Apple की डेवलपर वेबसाइट पर
UIBarStyle

क्षमा करें @alondono आप बिलकुल सही हैं, मैं नेविगेशन कंट्रोलर पर नेविगेशन बार पर क्लिक कर रहा था डॉक्यूमेंट की रूपरेखा में नहीं। मैं जिस काले रंग का चित्रण देख रहा हूं वह नकली मेट्रिक्स-> स्टेटस बार पर था। आपके उत्तर के लिए धन्यवाद
Rob85

@ रोब 85 कूल! मुझे बताने के लिए धन्यवाद।
अलंडोनो

76
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;

// *barTintColor* sets the background color
// *tintColor* sets the buttons color

4
और वास्तव में मैं इस कोड को कहाँ रख सकता हूँ ?? नौसिखिया प्रश्न के लिए खेद है वहाँ
Patricio Guerra

1
कोड में रखा जा सकता है - (शून्य)
दृश्य

2
IOS 9 में, barTintColor को काले रंग में सेट करने से समय, डिवाइस का नाम और बैटरी काली हो जाएगी ताकि आप उन्हें देख न सकें। इससे बचने के लिए, बारटिन्कलर का उपयोग करने के बजाय, self.navigationController.navigationBar.barStyle = UIBarStyleBlack का उपयोग करें;
TheJeff

46

नेविगेशन आधारित ऐप में आप कोड को AppDelegate में रख सकते हैं। एक अधिक विस्तृत कोड हो सकता है:

// Navigation bar appearance (background and title)

[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]];

[[UINavigationBar appearance] setTintColor:[UIColor barColor]];

// Navigation bar buttons appearance

[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil];

6
[[UINavigationBar appearance] setBarTintColor:[UIColor barColor]];iOS 7 के लिए जोड़ें
सामिन

24

में viewDidLoad, सेट करें:

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

blueColorआप जो भी रंग चाहेंगे उसे बदलें ( )।


18

तेजी से बदलाव के लिए नेविगेशन बार रंग:

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

शीर्षक शीर्षक बदलें, आकार, रंग:

self.title = "title"
self.navigationController?.navigationBar.titleTextAttributes = [
        NSAttributedString.Key.foregroundColor : UIColor.white,
        NSAttributedString.Key.font : UIFont(name: "Futura", size: 30)!
    ]

14

IOS 7 में आपको -barTintColor प्रॉपर्टी का उपयोग करना चाहिए:

navController.navigationBar.barTintColor = [UIColor barColor];

13

यदि आप एक हेक्स कोड का उपयोग करना चाहते हैं, तो यहां ऐसा करने का सबसे अच्छा तरीका है।

सबसे पहले, इसे अपनी कक्षा के शीर्ष पर परिभाषित करें:

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

फिर "एप्लिकेशन didFinishLaunchingWithOptions" के अंदर, इसे डालें:

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];

आपको 00b0f0 के स्थान पर हेक्स कोड डालें।


1
[UINavigationBar उपस्थिति] बहुत मददगार था।
केन

11

यदि आपको ios6 और ios7 का समर्थन करने की आवश्यकता है, तो आपको अपने UIViewController में इसका उपयोग करके विशेष रूप से हल्का नीला मिलता है :

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
    if ([[ver objectAtIndex:0] intValue] >= 7) {
        self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
        self.navigationController.navigationBar.translucent = NO;
    }else{
        self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
    }
}

3
IOS 7 पर: -self.navigationController.navigationBar.barTintColor बार कलर है और -self.navigationController.navigationBar.tintColor बटन टेक्स्ट कलर (बैक, किया ...) है।
इग्नाइटेकोडर्स 12

10

यह वास्तव में मेरे द्वारा देखे गए उत्तरों से अधिक आसान है:

1) Just make sure you select the navigation bar on the Navigation control. 
2) Select the color you want in the bar tint.
3) You have other options too, and/or individually on each view (just play with it).

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


धन्यवाद, मैं इस महीने पहले बदल गया था, जबकि चारों ओर खेल रहा था और समझ नहीं पा रहा था कि इसे वापस कैसे बदला जाए!
सममितिक

कोई बात नहीं, खुशी है कि मैं किसी की मदद कर सकता हूँ
pqsk

मुझे लगता है कि यह सबसे सीधे आगे का जवाब है! Thx
इस्पास क्लाउडीयू

कोई दिक्कत नहीं है। खुशी है कि यह अभी भी मददगार है
pqsk

5

रजनीश071 के कोड को पूरा करने के लिए, आप iOS 6 से 7 में डिफ़ॉल्ट व्यवहार को बदलने के बाद से नेविगेशन बार का शीर्षक रंग (और यदि आप चाहें तो) सेट करना चाह सकते हैं:

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7)
{
    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.translucent = NO;
    NSMutableDictionary *textAttributes = [[NSMutableDictionary alloc] initWithDictionary:mainNavController.navigationBar.titleTextAttributes];
    [textAttributes setValue:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    self.navigationController.navigationBar.titleTextAttributes = textAttributes;
}
else
{
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}

5

अपने में ही यह कोड जोड़ें ViewContorller या में अपनेAppDelegate

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
    //This is For iOS6
    [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
else
{
    //This is For iOS7
    [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}

4
//You could place this code into viewDidLoad
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
 }   
//Or you can place it into viewDidAppear
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:(BOOL)animated];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
}

4

नेविगेशन आधारित एप्लिकेशन में आप रंग बदल सकते हैं

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
}

1
IOS7 में tintColor संपत्ति बदलने से अब बार बैकग्राउंड कलर बदलने का प्रभाव नहीं पड़ता है। IOS7 में टिंट रंग केवल BarButtonItems आदि के पाठ रंग को प्रभावित करता है
पास्कल बायर

4
#define _kisiOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)


  if (_kisiOS7)
    {
        [[UINavigationBar appearance] setBarTintColor:[UIcolor redcolor]];
    }
    else
    {
        [[UINavigationBar appearance] setBackgroundColor:[UIcolor blackcolor]];
        [[UINavigationBar appearance] setTintColor:[UIcolor graycolor]];
    }

3

यह प्रश्न और ये उत्तर सहायक हैं। उनके साथ मैं अपने वांछित गहरे नीले navigationBarरंग को सफेद शीर्षक और बटन पाठ के साथ सेट करने में सक्षम था ।

लेकिन मुझे घड़ी, वाहक, सिग्नल की ताकत आदि को सफेद में बदलने की भी आवश्यकता थी। काले गहरे नीले रंग के साथ पर्याप्त विपरीत नहीं था।

मैं पिछले जवाब में से एक में है कि समाधान की अनदेखी हो सकता है, लेकिन मैं अपने शीर्ष स्तर पर इस लाइन को जोड़ने के द्वारा यह बदलाव लाना करने में सक्षम था viewControllerकी viewDidLoad:

[self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent];

UIStatusBarStyleLightContentकाम करता है, लेकिन ऐसा लगता है के लिए सही फिटकिरी setBarStyle:हैUIBarStyleBlack
Collin एलन


3

रंग के लिए:

[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];

छवि के लिए

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.