2014-04-15 15 views
7

मैं एक विशिष्ट नेविगेशन नियंत्रक के लिए एक कस्टम उपस्थिति की स्थापना कर रहा हूँ गहरा प्रकट होता है:आईओएस UINavigationBar टिंट रंग रंग सेट से

//Set Cutom Nav Bar Appearance 
[[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBackgroundImage: nil forBarMetrics: UIBarMetricsDefault]; 
[[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBarTintColor: self.tableView.backgroundColor]; 

जब नेविगेशन नियंत्रक प्रदर्शित किया जाता है, की उम्मीद रंग आरजीबी है (247, 247, 247) - जो मैंने दो बार चेक किया है वह वैल्यू सेट का मूल्य है जब मूल्य सेट होता है - लेकिन यह स्क्रीन पर आरजीबी (227, 227, 227) के रूप में दिखाई देता है। क्या UINavigationBar की उपस्थिति प्रॉक्सी की एक अलग संपत्ति हो सकती है जो स्क्रीन पर प्रदर्शित रंग बदल रहा है?

धन्यवाद!

संपादित करें:

साथ ही, यदि मैं सीधे इच्छित रंग का उपयोग कर barTintColor निर्धारित करते हैं, barTintColor स्क्रीन पर प्रदर्शित अभी भी गहरे रंग की अपेक्षा से अधिक है:

UIColor* navBarBackgroundColor = [UIColor colorWithRed: (247.0/255.0) green: (247.0/255.0) blue: (247.0/255.0) alpha: 1]; 
//Set Cutom Nav Bar Appearance 
[[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBackgroundImage: nil forBarMetrics: UIBarMetricsDefault]; 
[[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBarTintColor: navBarBackgroundColor]; 

समाधान

@ मैट के उत्तर से प्राप्त समाधान कोड यहां दिया गया है। उम्मीद है कि यह

CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 
UIGraphicsBeginImageContext(rect.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetFillColorWithColor(context, [self.tableView.backgroundColor CGColor]); 
CGContextFillRect(context, rect); 
UIImage *navBarImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

//Set Cutom Nav Bar Appearance 
[[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBackgroundImage: navBarImage forBarMetrics: UIBarMetricsDefault]; 
+0

क्या आप कृपया कोड की लाइन जोड़ देंगे जहां आप आरजीबी मूल्य निर्दिष्ट कर रहे हैं? –

+0

क्या यह बार की अल्फा या पारदर्शिता सेटिंग्स हो सकती है? क्या आपने इसे चेक किया है? – Michal

+0

@William tableView.background रंग जिसे नेविगेशन में अग्रेषित किया जा रहा हैबार स्टोरीबोर्ड में सेट किया जा रहा है। भले ही मैं स्पष्ट रूप से वांछित रंग सेट करता हूं, फिर भी इसे सेट रंग (ऊपर संपादित कोड में) से अधिक गहरा दिखाया जा रहा है – Glavid

उत्तर

13

नेविगेशन बार का रंग सेट करने का तरीका बिल्कुल सही है जो आप कर रहे हैं उसके विपरीत है। आप इसे एक रंग का रंग और कोई पृष्ठभूमि छवि दे रहे हैं। इसके बजाए, इसे एक पृष्ठभूमि छवि दें जिसमें वांछित रंग के आयताकार शामिल हों - और कोई टिंट रंग न हो।

इसके translucent को भी सेट करें।

+0

इस तरह से पृष्ठभूमि रंग सेट करने के लिए अजीब लगता है, लेकिन यह काम करता है। मुझे लगता है कि स्क्रीन पर प्रदर्शित होने से पहले बारटिंटकोर्स को ओएस द्वारा संशोधित किया जाता है, ताकि आप कह सकें कि यह "सटीक पाने का सबसे अच्छा तरीका" रंग है। मदद के लिए धन्यवाद .. प्रश्न में वापस समाधान कोड पोस्टिंग। – Glavid

+0

यह आंशिक रूप से संपूर्ण पारदर्शी व्यवसाय है, और आंशिक रूप से "टिंट" शब्द का अर्थ है (जिसे गंभीरता से लिया जाना चाहिए)। – matt

संबंधित मुद्दे