2014-09-26 7 views
15

आईओएस 8 के साथ सिर्फ आईफोन और आईपैड आकार की अवधारणा पोर्ट्रेट और परिदृश्य के साथ बदल गई है और नेविगेशन बार सेटिंग छवि को स्थापित करने के लिए वही काम नहीं कर रहा है। वर्तमान में मैं निम्नलिखित कोड का उपयोग कर रहा है: जब मेरे ऐप शुरूआईओएस 8 नेविगेशनबार पृष्ठभूमि छवि

UIImage *NavigationPortraitBackground = [[UIImage imageNamed:@"nav-image-portrait"] 
             resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

UIImage *NavigationLandscapeBackground = [[UIImage imageNamed:@"nav-image-landscape"] 
              resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

[[UINavigationBar appearance] setBackgroundImage:NavigationPortraitBackground forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setBackgroundImage:NavigationLandscapeBackground forBarMetrics:UIBarMetricsCompact]; 

बार मैट्रिक्स भाग आईओएस 8. के ​​रूप में पदावनत किया गया है यह बस क्षैतिज जब बार छवि को दोहराता है एक iPhone 6 या 6 प्लस पर। मैंने छवि स्लाइस में देखा है लेकिन मुझे लगता है कि समाधान भी नहीं है।

portrait landscape

+0

आपकी समस्या @ क्रिस को हल कर सकती है। –

उत्तर

69

मैं समाधान की चौड़ाई है। मुझे विधि resizableImageWithCapInsets का उपयोग करने की आवश्यकता है: resizingMode: और resizingMode को UIImageResizingModeStretch पर सेट करें, अन्यथा छवि नेविगेशन बार में अभी भी टाइल होगी।

ऑब्जेक्टिव-सी:

[[UIImage imageNamed:@"nav-image-portrait"] 
             resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch]; 

स्विफ्ट 3/4:

UINavigationBar.appearance().setBackgroundImage(UIImage(named: "image")!.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default) 
+0

सही। अन्य सभी समाधानों में छवि दोहराई जा रही थी। आपने मेरा दिन बचाया – nidhin

4
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"navbarimg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)] forBarMetrics:UIBarMetricsDefault]; 

उपयोग उपरोक्त कोड यह छोटे आकार छवि (40*navigarbarheight) 40 का उपयोग works.And छवि

+0

क्षमा करें, मैंने कोड अपडेट किया है जो दिखाता है कि मैं पहले से ही आकार बदलने योग्य कैप इन्सेट वाली छवियों का उपयोग कर रहा हूं और ऐसा लगता है कि यह काम नहीं कर रहा है। – Chris

+0

हाँ, यह काम नहीं करता है। छवि अभी भी टाइल है। – HughHughTeotl

0

यह और अधिक संक्षिप्त और सभी आकार की स्क्रीन पर फिट करने के लिए सही पर नमूना कोड है। इससे

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"header"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, screenWidth-50, 50)] forBarMetrics:UIBarMetricsDefault]; 
संबंधित मुद्दे