2010-11-30 14 views
5

मैं अपने UINavigationBar की पृष्ठभूमि को [UIColor colorWithImage:] पर बदलना चाहता हूं, लेकिन यह काम नहीं कर रहा है। मैं क्या खो रहा हूँ?मैं UINavigationBar की पृष्ठभूमि कैसे बदलूं?

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

एक बार मैं अपने उपवर्ग बना लिया है, जहां मैं इसे उपयोग करने के लिए UINavigationController सेट करूँ?

उत्तर

8

आप एक UINavigationBar की रंग बदलने के लिए tintColor संपत्ति का उपयोग कर सकते हैं, लेकिन उदाहरण के लिए पृष्ठभूमि आप अपने खुद के UINavigationBar उपवर्ग प्रदान कर सकें रूप में एक छवि सेट और drawRect: विधि ओवरराइड करने के लिए,:

- (void)drawRect:(CGRect)rect { 
    // Drawing code 
    UIImage *img = [UIImage imageNamed: @"background-image.png"]; 
    [img drawInRect:CGRectMake(0, 
           0, 
           self.frame.size.width, 
           self.frame.size.height)]; 
} 

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

Example screenshot showing custom UINavigationBar subclass

+0

: UINavigationBar+CustomBackground.m के रूप में सहेजें (यह UINavigationBar के लिए एक कस्टम श्रेणी जोड़ता है)? – Moshe

+0

अच्छा सवाल - उत्तर तदनुसार संशोधित। –

+0

क्या यह कोड में पूरी तरह से संभव है? इसके अलावा, क्या यह एचआईजी को तोड़ देता है? – Moshe

7

नेविगेशन पट्टी में एक छवि बनाने के लिए, आप इसे अपने आप को आकर्षित करने के लिए, जो वास्तव में है कि मुश्किल नहीं है। अब मैं कैसे UINavigationBar UINavigationController के अंदर दिखाने के लिए निर्धारित है

@implementation UINavigationBar (CustomBackground) 

- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed:@"NavMain.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 

@end 
+1

एक श्रेणी का उपयोग करना * सभी * नेविगेशन बार की पृष्ठभूमि को अपरिवर्तनीय रूप से बदल देगा। आप सबक्लास का उपयोग बंद कर रहे हैं। –

+0

हमने इस विधि का उपयोग तब तक किया जब तक हम अलग-अलग दृश्य नियंत्रकों पर विभिन्न नेविगेशन बार नहीं चाहते थे। फिर दुर्भाग्य से यह विधि –

+0

असफल रूप से विफल हो जाती है, आप कक्षा के आधार पर कुछ कक्षा का पता लगाने और व्यवहार करने में सक्षम हो सकते हैं। हालांकि आपको अभी भी डिफ़ॉल्ट व्यवहारों को फिर से लागू करना होगा। – Moshe

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