2015-02-03 15 views
12

मैं अपने एनएवी बार पर लोगो प्राप्त करने के लिए इस कोड का उपयोग कर रहा हूं।नेविगेशन बार बटन छवि

override func viewDidAppear(animated: Bool) { 

    let image = UIImage(named: "LogoWithTextSmaller.png") 
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: nil, action: nil) 
    } 

यह ठीक है, लेकिन लोगो के पास 'नीला' के अलावा कोई रंग नहीं है। ऐसा इसलिए है क्योंकि यह एक पीएनजी फ़ाइल है। वहाँ कुछ मैं तो यह बरकरार रखे हुए कर सकते हैं मूल रंग

मैंने यह किया है है:

self.navigationItem.titleView = UIImageView(image: image) 

और है कि सही रंग के साथ नेविगेशन बार पर छवि पेश करती है - लेकिन यह बीच में है और मैं यह चाहता हूँ बाईं तरफ।

+0

में आप की कोशिश की है टिंटकलर बदल रहा है? UINavigationBar.appearance()। TintColor = UIColor.redcolor() – Egghead

+0

मेरे पास पहले से ही एनएवी बार पर पृष्ठभूमि रंग है, छवि पारदर्शी है और यह एक हल्का नीला और हरा रंग है, लेकिन जब मैं इसे बाएं बार्बटन के साथ जोड़ता हूं तो यह एक सुस्त हो जाता है नीला। जब मैं छवि दिखाने के लिए शीर्षकदृश्य का उपयोग करता हूं - यह ठीक है लेकिन मुझे इसे बाईं ओर ले जाना है और बीच में नहीं। – Jason

+0

क्या आपने यह कोशिश की है: self.navigationItem.leftBarButtonItem.tintColor = UIColor.redColor() – Egghead

उत्तर

20

आपको यह घोषणा करने की आवश्यकता है कि छवि हर समय मूल रहती है। इसलिए

var image = UIImage(named: "image-name") 
image = image?.withRenderingMode(.alwaysOriginal) 
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style:.plain, target: nil, action: nil) 
+0

बहुत बढ़िया, धन्यवाद। लेकिन 'चलो' को 'var' – Anytoe

+0

@bhavik shah धन्यवाद होना चाहिए, यह बहुत अच्छा काम करता है। एकमात्र मुद्दा। उपयोग की जाने वाली छवि को वास्तव में फिट करने की आवश्यकता है नेविबार और फिर पिक्सलेटेड दिखता है, खासकर 6 और 6 प्लस पर। क्या कोई तरीका है कि हम एक बड़ी छवि का उपयोग कर सकते हैं लेकिन एनएवी बार में फिट करने के लिए फ्रेम सेट कर सकते हैं? – user2363025

+1

आप वास्तव में इसे एक पंक्ति के साथ प्राप्त कर सकते हैं: 'someBarButtonItem। छवि = UIImage (नाम: "yourPictureName")? imageWithRenderingMode (UIImageRenderingMode.AlwaysOriginal) ' – OhadM

2

नीचे के रूप में कोड जोड़ने में स्विफ्ट 3 ही निम्न सिंटैक्स

var image = UIImage(named: "Filter") 
image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: nil, action: nil) 
0

स्विफ्ट 3,0

let btnLogo = UIButton(frame: CGRect(x: 0, y: 0, width: 25, height: 25)) 
btnLogo.setTitle("", for: .normal) 
btnLogo.backgroundColor = UIColor.clear 
btnLogo.layer.cornerRadius = 4.0 
btnLogo.layer.masksToBounds = true 

var imageLogo = UIImage(named: "LogoWithTextSmaller.png") 
imageLogo = imageLogo?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
btnLogo.setImage(imageLogo, for: .normal) 

let barButton = UIBarButtonItem(customView: btnLogo) 
self.navigationItem.leftBarButtonItem = barButton 

तेजी का उपयोग कर पूरा किया जाएगा 2.0

var image = UIImage(named: "Filter") 
image = image?.imageWithRenderingMode(UIImageRenderingMode.alwaysOriginal) 

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

UIImage *image = [[UIImage alloc] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

UIBarButtonItem *_btnLeftBar = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"LogoWithTextSmaller.png"] 
                 style:UIBarButtonItemStylePlain 
                target:self 
                action:@selector(yourMethod)]; 

self.navigationItem.rightBarButtonItem= _btnLeftBar; 

withRenderingMode (के लिए _ :) विवरण सेब दस्तावेज़ीकरण लिंक नीचे देखें https://developer.apple.com/documentation/uikit/uiimage/1624153-withrenderingmode

0

तेज 3,0

let Navigateimage = UIImage(named: "LogoWithTextSmaller.png") 
    Navigateimage = image?.withRenderingMode(.alwaysOriginal) 
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: Navigateimage, style:.plain, target: nil, action: nil) 
संबंधित मुद्दे