2011-06-08 37 views
27

में यूआईटीयूएलबार पर कस्टम पृष्ठभूमि छवि कल आईओएस 5 एसडीके डाउनलोड की गई, और यह कोड जिसे मैं अपनी यूआईटीूलबार की पृष्ठभूमि को कस्टम छवि पर सेट करने के लिए उपयोग करता हूं, काम करना बंद कर दिया। यदि मैं लक्ष्य IOS4.3 पर सेट करता हूं और नीचे यह अभी भी काम करता है।आईओएस 5 एसडीके

[self.bizToolbar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navbar-iphone.png"]] autorelease] atIndex:0]; 

किसी को भी आईओएस 5 पर इसका सामना करना पड़ा?

+2

iOS5 NDA के अंतर्गत है, इसलिए मुझे लगता है कि आप इसे सेब के समर्पित मंचों पर सूचक के लिए केवल – Vladimir

उत्तर

49

आप उपयोग कर सकते हैं: [[UIToolBar appearance] setBackgroundImage:toolBarIMG forBarMetrics:UIBarMetricsDefault]; (नए iOS 5 में)

+0

यह शानदार है, क्योंकि यह सभी * आपके * एनवी बार के लिए पृष्ठभूमि को अच्छी तरह से सेट करता है, आपको उनमें से प्रत्येक को ऐसा करने की ज़रूरत नहीं है। मुझे सही दिशा बताने के लिए धन्यवाद। – Chris

+0

यूआईटीूलबार के लिए कोई समकक्ष? – Chris

+59

[[यूआईटीूलबार उपस्थिति] सेटबैकग्राउंड छवि: बारबैक के लिए टुलबारपॉशन: यूआईटीूलबारपॉशनएनी बारमैट्रिक्स: UIBarMetricsDefault] – Chris

3

यह विधि दस्तावेज नहीं है और UIToolbar की विशिष्ट सबव्यूज़ संरचना पर निर्भर करती है जिसे संस्करण से संस्करण में बदला जा सकता है। तो आईओएस 5 रिलीज के साथ शायद यह हुआ कि

पीएस आप अद्यतन UIToolBar class संदर्भ देखें कि क्या आप UIToolBar

+0

Validmir धन्यवाद चर्चा कर सकते हैं। मैं प्रलेखन की जांच करूंगा। मैंने अभी यह कोशिश की और यह सभी आईओएस संस्करणों में काम करता है। @interface WoodenToolbar: UIToolbar {} - (शून्य) drawRect: (CGRect) rect; @end @implementation WoodenToolbar - (शून्य) drawRect: (CGRect) रेक्ट { UIImage * image = [UIImage imageNamed: @ "नेवबार-iphone.png"]; [छवि drawInRect: CGRectMake (0, 0, self.frame.size.width, self.frame.size.height)]; } @end – StackThis

35

अनुकूलित करने के लिए एक और रास्ता मिल जाएगा मान लीजिए आप iOS5 बीटा एसडीके जुड़ा हुआ है, तो आप इस

if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 
     //iOS 5 new UINavigationBar custom background 
     [navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault]; 
} 

की तरह कुछ कर सकता है यह एहसास करने के लिए, यहाँ iOS 4.3 to iOS 5.0 API Differences पर एक नज़र और "UINavigationBar.h"

खोज सकते हैं या नई विधि हस्ताक्षर यहाँ setBackgroundImage:forBarMetrics:

पर विशेष ध्यान दें

यहां भी UIBarMetrics enum प्रकार

आशा है कि इससे मदद मिलती है।

+0

आपको बहुत बहुत धन्यवाद!यह पूरी तरह से काम करता है – shabbirv

10

यह मेरा उपकरण पट्टी पर काम किया:

//toolBar background image set based on iOS version 
    [[UIDevice currentDevice] systemVersion]; 

    if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) { 

     //iOS 5 
     UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"]; 

     if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
      [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; 
     } 

    } else { 

     //iOS 4 
     [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; 

    } 
+6

सिस्टम संस्करण की जांच करने की कोई आवश्यकता नहीं है (और यह आम तौर पर एक अच्छा अभ्यास नहीं है), क्योंकि यह तय करने के लिए 'पत्राचार करने के लिए' चयन करना पर्याप्त होना चाहिए कि यह करने के नए तरीके या पुराने तरीके का उपयोग करना है या नहीं। –

+0

आईओएस 5 अच्छी तरह से काम कर रहा है लेकिन आईओएस 4 प्रतिक्रिया नहीं दे रहा है। मुझे क्या करना चाहिए? – Hiren

0

यह, सिमोन के जवाब के रूप में ही रेखा के साथ है, लेकिन आईओएस 5 और iOS < लिए काम करता है 5. यह वही है जो मैं ऐप में उपयोग कर रहा हूं। आपको अपने ऐप प्रारंभ में कहीं भी [UINavigationBar setupIos5PlusNavBarImage] पर कॉल करने की आवश्यकता है (एप्लिकेशनडिडफिनिश लॉन्चिंग: एक अच्छा उम्मीदवार है)। आईओएस 5+ पर, setupIos5PlusNavBarImage पृष्ठभूमि सेट करने के लिए नए UIAppearance प्रोटोकॉल का उपयोग करेगा और drawRect ओवरराइड को अनदेखा कर दिया जाएगा। आईओएस < 5 पर, setupIos5PlusNavBarImage मूल रूप से नो-ऑप होगा और drawRect छवि को चित्रित करने में संभाल लेंगे।

इंटरफ़ेस:

@interface UINavigationBar (CustomNavigationBar) 

+ (void) setupIos5PlusNavBarImage; 

- (void) drawRect: (CGRect) rect; 

@end 

कार्यान्वयन:

@implementation UINavigationBar (CustomNavigationBar) 

+ (void) setupIos5PlusNavBarImage 
{ 
    if ([UINavigationBar respondsToSelector: @selector(appearance)]) 
    { 
     [[UINavigationBar appearance] setBackgroundImage: [UIImage imageNamed: @"menuBar.png"] forBarMetrics: UIBarMetricsDefault]; 
    } 
} 

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

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