2017-10-10 7 views
5

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

मेरे पास सिस्टम आइटम स्टॉप के साथ बाएं बार बटन आइटम है। तो यह X आइकन जैसा दिखता है। मैं अपनी सेटिंग्स पीडीएफ छवि के साथ दाईं ओर एक ही चीज़ करना चाहता हूं।

क्या इंटरफ़ेस बिल्डर के भीतर इस आकार के मुद्दे को ठीक करने का कोई तरीका है? यदि नहीं, तो मैं इसे कोड में कैसे ठीक कर सकता हूं?

उत्तर

6

छवि का आकार बहुत बड़ा होने पर कोड का उपयोग करना, मैं पर पर प्रतिपादन/सेटिंग करने से पहले आकार बदलता हूं। मेरे पास यह एक्सटेंशन UIImage पर है जो एक छवि को फिर से स्केल करने में मदद करता है।

// MARK: - Used to scale UIImages 
extension UIImage { 
    func scaleTo(_ newSize: CGSize) -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0) 
     self.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)) 
     let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
     UIGraphicsEndImageContext() 
     return newImage 
    } 
} 

इस का उपयोग करते हुए इस

let defaultImage = UIImage(named: "someimagenamehere")? 
    .scaleTo(CGSize(width: 40, height: 40)) 

self.navigationItem.leftBarButtonItem = UIBarButtonItem(
    image: defaultImage, 
    style: .plain, 
    target: self, 
    action: #selector(self.someselectorhere(_:))) 

अद्यतन दिखाई देगा: यह वही है @IBDesignable और @IBInspectable कोई रास्ता नहीं करने के लिए का उपयोग कर

@IBDesignable 
class CustomBarButtonItem: UIBarButtonItem { 

    @IBInspectable 
    var scaledHeight: CGFloat = 0 { 
     didSet { 
      self.image = self.image?.scaleTo(CGSize(width: self.scaledHeight, height: self.scaledWidth)) 
     } 
    } 

    @IBInspectable 
    var scaledWidth: CGFloat = 0 { 
     didSet { 
      self.image = self.image?.scaleTo(CGSize(width: self.scaledHeight, height: self.scaledWidth)) 
     } 
    } 
} 
+0

तो वहाँ है कैसा दिखेगा है यह स्टोरीबोर्ड के भीतर ही है? –

+0

मेरा अनुमान एक 'आईबी डिज़ाइन करने योग्य' 'UIBarButtonItem' Subclass बनाना होगा जिसमें कुछ' IBInspectable' गुण हैं जो छवियों को फिर से स्केल करने में मदद करेंगे। –

+1

'IBDesignable' का उपयोग करके पूरी तरह से काम किया। बहुत बहुत धन्यवाद। अंत में बक्षीस पुरस्कार होगा। –

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