2016-08-01 9 views
9

मैं एक कस्टम कीबोर्ड बना रहा हूं और मुझे शिफ्ट बटन के अंदर शिफ्ट आइकन की छवि को केंद्रित करने की आवश्यकता है। छवि 100px x 100px है।स्विफ्ट में दोनों दिशाओं में फैले बिना UIButton के अंदर एक छवि को कैसे केन्द्रित करें?

हालांकि, चित्र में बटन फ्रेम 36pt x 38pt है, और परिदृश्य में, यह 68pt x 32pt है। मैंने छवि को केंद्र में रखने के लिए बटन छवि इन्सेट संपत्ति का उपयोग करने का प्रयास किया है। हालांकि, ऐसा नहीं करता है।

मैंने अपने आप को आजमाया और छवि किनारे के इन्सेट को (25,25,25,25) पर सेट किया, दोनों आकारों में छवि केंद्र। हालांकि, आइकन देखने के लिए बहुत छोटा हो जाता है।

shiftButton.setImage(UIImage(named: "shift"), forState: .Normal) 

shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0) 

मैं प्रोग्राम को प्रोग्रामिक रूप से बना रहा हूं। और, मुझे अपने पहलू अनुपात को बनाए रखने के लिए बटन की आवश्यकता है यानी 1:1। इसकी अधिकतम चौड़ाई या ऊंचाई हमेशा बटन की ऊंचाई से जुड़ी होती है। छवि चौड़ाई/ऊंचाई अधिकतम बटन की ऊंचाई होनी चाहिए। और, यह आइकन विकृत करने के लिए किसी भी तरह से खिंचाव नहीं करना चाहिए। हालांकि, बटन स्वयं खिंचाव कर सकते हैं।

मुझे बटन फ्रेम के अनुसार स्केल करने की छवि की आवश्यकता है लेकिन इसके पहलू अनुपात को बनाए रखें। और, यह स्केल या स्केल डाउन कर सकता है, लेकिन हमेशा 1: 1 पहलू अनुपात को बनाए रखना चाहिए।

इस समस्या को हल करने के लिए कोई सुझाव?

उत्तर

9

अंत में एक समाधान के माध्यम से आया था। आपको UIButton के अंदर छवि के लिए सामग्री मोड सेट करना होगा।

समाधान जब आप UIButton की contentMode के साथ एक बटन के अंदर एक अग्रभूमि छवि का उपयोग कर रहे Image की contentMode अद्यतन करने के लिए है।

shiftButton.contentMode = .Center 
shiftButton.imageView?.contentMode = .ScaleAspectFit 
+0

। नवीनतम स्विफ्ट के लिए सेंसर और .scaleAspectFit (अब लोअरकेमकेस का उपयोग कर) –

3

Center के लिए बटन की सामग्री मोड सेट करें:

shiftButton.contentMode = .Center 
+0

मैं पहले से ही यह कोशिश की है बराबर है। यह इस विशेष मामले में काम नहीं कर रहा है। शायद, इसकी वजह यह है कि फ्रेम बड़ा है कि फ्रेम का आकार। – Ariel

+0

जब बटन की चौड़ाई खिंचाव शुरू होती है, तो छवि भी खिंचाव लगती है। और, यह व्यवहार बिल्कुल वांछित नहीं है। – Ariel

+0

क्या आपने '.ScaleAspectFit' की कोशिश की है? –

0

मैं स्टोरीबोर्ड पर आकार निरीक्षक का उपयोग कर 0 करने के लिए सामग्री सन्निवेश वाली स्थापना करके छवि केंद्रित करने के लिए कर रहा था:

enter image description here

0
  • जोड़े उपयोगकर्ता निर्धारित क्रम अपने बटन के लिए गुण।

मूल्य 1 से नीचे स्क्रीन शॉट में scaleAspectFit को

imageView.ContentMode = scaleAspectFit 

enter image description here enter image description here

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