2013-02-01 63 views
5

मैं अपने टेबल दृश्यों में नेविगेशन बार के लिए एक कस्टम छाया छवि सेट करने की कोशिश कर रहा हूं, लेकिन यह केवल कुछ विचारों में दिखा रहा है। मैंने अपने टेबल दृश्यों के लिए शैलियों को सेट करने के लिए एक सुपर क्लास बनाई है।नेविगेशनबार सेटशैडोइमेज हमेशा काम नहीं करता

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Set navigation bar background 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground.png"] forBarMetrics:UIBarMetricsDefault]; 

    // Set navigation bar shadow imag 
    [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

दृश्य में मैं अपना ऐप शुरू करने पर देखता हूं, कोई छाया दिखाई नहीं देती है। लेकिन जब मैं अपने नेविगेशन बार में [0] बटन को स्पर्श करता हूं तो अपना 'नया आइटम' तालिका दृश्य खोलने के लिए, यह एक छाया दिखाता है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

+0

आपको उपस्थिति प्रॉक्सी का उपयोग करना चाहिए। – dasdom

+0

धन्यवाद। मैंने कोशिश की, लेकिन एक ही परिणाम के साथ। – lsdevries

+0

सुनिश्चित करें कि 'viewDidLoad' में 'self.navigationController'' nil' नहीं है! – MoLice

उत्तर

7

उपस्थिति प्रॉक्सी काम करना चाहिए।

स्टार्टअप पर बस इसे कहीं (उदा। अपने ऐपडिलेगेट में) कॉल करें।

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self customizeAppearance]; 
    return YES; 
} 

- (void) customizeAppearance 
{ 
    // Set the background image for *all* UINavigationBars 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground"] forBarMetrics:UIBarMetricsDefault]; 

    // Set the shadow image for *all* UINavigationBars 
    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

    //add other appearance stuff here... 
} 

लेकिन अगर आप एक से अधिक UINavigationController उस में के साथ एक स्टोरीबोर्ड और का एक समूह बनाने के segue का धक्का नेविगेशन नियंत्रक के आप एक भ्रष्ट दृश्य नियंत्रक संरचना है जो यहाँ समस्या हो सकती है मिल सकता है।

एक और संभावित समस्या Clip Subviews आपकी निब फ़ाइल या कहीं स्टोरीबोर्ड में नेविगेशन बार का विकल्प हो सकती है। सुनिश्चित करें कि यदि आप छाया (छवि) चाहते हैं तो इसे बंद कर दिया गया है!

ClipSubviews

वैसे, अगर आप imageNamed का उपयोग आप फाइल एक्सटेंशन शामिल करने की ज़रूरत नहीं है।

+2

वाह धन्यवाद! अनचेकिंग क्लिप सबव्यूज़ ने चाल की। एक सुपर क्लास में स्टाइल लगाने का कारण यह है कि मैं सभी स्टाइल को एक ही स्थान पर रखना चाहता था। – lsdevries

+0

एक आकर्षण की तरह काम किया !! thanx –

0

इसे आजमाएं!

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-iphone.png"]]; 
+0

धन्यवाद, लेकिन मैंने पहले ही कोशिश की है। उपस्थिति प्रॉक्सी का उपयोग करने के लिए प्रत्येक तालिका दृश्य में इसका उपयोग करने से अलग परिणाम होना चाहिए ?: [self.navigationController.navigationBar setBackgroundImage: [UIImage imageNamed: @ "navigationbarbackground.png"] के लिए BarMetrics: UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage: [UIImage imageNamed: @ "navigationbarshadow.png"]]; – lsdevries

9

आपको UINavigationBar के लिए कस्टम backgroudImage सेट करने की आवश्यकता है, तो shadowImage काम कर सकता है।

+0

एक महत्वपूर्ण जानकारी है! बहुत से लोग यह नहीं जानते हैं .. मुझे उम्र ले ली .. – Rikco