2010-08-25 25 views
7

क्या दृश्य के शीर्ष पर नेविगेशन आइटम के पृष्ठभूमि रंग को बदलने का कोई आसान तरीका है? मेरे पास एक नेविगेशन आधारित ऐप है और मैं केवल यह चाहता हूं कि एक दृश्य को एक और पृष्ठभूमि रंग मिल जाए। मैंने मुख्य रूप से आईबी के साथ विचार बनाए।नेविगेशन आइटम (बार) का पृष्ठभूमि रंग बदलें

float r=10; 
float g=55; 
float b=130; 
float a=0; 

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 120, 30)]; 
[label setBackgroundColor:[UIColor colorWithRed:r/255.f 
              green:g/255.f 
              blue:b/255.f  
              alpha:a/255.f];]; 
[self.navigationController.navigationBar.topItem setTitleView:label]; 
[label release]; 

वहाँ

[navigationController.navigationBar setBackgroundColor:blueColor] 

या मैं यह आईबी के साथ (लेकिन हर दृश्य में एक ही रंग के बिना) कर सकते हैं की तरह एक आसान तरीका है: मैं निम्नलिखित समाधान (नहीं परीक्षण किया) पाया?

अग्रिम में बहुत धन्यवाद!

चीयर्स

उत्तर

17

आप इस्तेमाल कर सकते हैं:

[navigationController.navigationBar setTintColor:[UIColor redColor]; //Red as an example. 

यह एक विशिष्ट रंग के लिए नेविगेशन बार और सभी यह बटन के रंग टिंट हैं, इस मामले लाल रंग में। यह संपत्ति इंटरफ़ेस बिल्डर में भी सेट की जा सकती है।

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

शीर्षलेख फ़ाइल।

#import <UIKit/UIKit.h> 

@interface UINavigationBar (CustomImage) 

@end 

implementaion फ़ाइल।

#import "CustomNavigationBar.h" 

@implementation UINavigationBar (CustomImage) 

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 

{ 
    if([self isMemberOfClass: [UINavigationBar class]]){ 
     UIImage *image = [UIImage imageNamed:@"bar.png"]; 
     CGContextClip(ctx); 
     CGContextTranslateCTM(ctx, 0, image.size.height); 
     CGContextScaleCTM(ctx, 1.0, -1.0); 
     CGContextDrawImage(ctx, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage); 
    }else{ 
     [super drawLayer:layer inContext:ctx]; 
    } 

} 

@end 

फिर इंटरफ़ेस बिल्डर में पहचान टैब के अंतर्गत UINavigationBar को (इस मामले में) CustomNavigationBar आप के वर्ग निर्धारित किया है।

+1

धन्यवाद! पहला समाधान वर्तमान में पर्याप्त है। मैंने का उपयोग किया [[[स्वयं नेविगेशन नियंत्रक] नेविगेशनबार] सेट टिंटकॉलर: [यूआईसीओलर रंगविड्थ: 255/255.एफ हरा: 0/255.एफ नीला: 0/255.एफ अल्फा: 0/255.एफ]]; लेकिन दूसरा मेरा ऐप के उत्पादक संस्करण में होगा;) अभी भी एक प्रश्न: मेरे अन्य विचारों में मेरे पास निब में बार नेविगेशन बार ऑब्जेक्ट नहीं है। क्या आईबी में टिंट रंग सेट करने की संभावना है? या इसे हार्डकोड करने का एकमात्र तरीका है? – testing

+0

दुर्भाग्यवश आप आईबी में अपने मुख्य दृश्य में केवल नेविगेशन बार का रंग रंग सेट कर सकते हैं। यदि आप विचारों के बीच टिंट को बदलना चाहते हैं तो आपको इसे हार्डकोड करना होगा। – Joshua

+0

ठीक है, इससे कोई फर्क नहीं पड़ता। मैं केवल यह जानना चाहता था। एक बार फिर धन्यवाद! – testing

1

आप navigationController.navigationBar.tintColor उपयोग कर सकते हैं;

1

@jerry

टिंट रंग आरजीबी निर्देशांक

2

[[UINavigationBar उपस्थिति] setTintColor को समर्थित नहीं है: [UIColor colorWithRed: 107.0/256.0 हरी: 145.0/256.0 नीले रंग: 35.0/256.0 अल्फा: 1.0 ]]; पूरे ऐप के नेविगेशन बार का रंग बदल देगा।

बस AppDelegate के didFinishLauncing विधि में रखें।

3

अपने UINavigationController पर इंटरफ़ेस बिल्डर में यह कोशिश करो।

enter image description here

+0

बहुत उपयोगी। यह मेरे लिए काम किया .. –

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