2015-08-07 5 views
7

ऑटो लेआउट के साथ UIButton बनाते समय, intrinsicContentSize में अलग-अलग टेक्स्ट फ़ॉन्ट आकार के अनुसार हमेशा अलग-अलग शीर्ष/नीचे पैडिंग होते हैं। मैं contentEdgeInsets सेट करने का प्रयास करता हूं, लेकिन यह वास्तव में शीर्ष/नीचे पैडिंग के लिए काम नहीं करता है।ऑटो लेआउट का उपयोग करते समय इसे बनाते समय UIButton के शीर्ष और नीचे पैडिंग को कैसे हटाएं?

पैडिंग को 0 या किसी निरंतर मान को कैसे ठीक किया जाए?

उत्तर

-1

देखें कि यह काम करता है या नहीं। बटन के बजाए UIButton के शीर्षक लेबल में लंबवत बाधाएं बनाएं।

+0

मेरे लिए काम नहीं किया। – SeanR

1

यदि आप बटन को अपने शीर्षक लेबल के आकार में आकार देने के लिए चाहते हैं, तो मुझे पता चला कि ऐसा करने का एकमात्र तरीका UIButton subclassing और intrinsicContentSize ओवरराइड करना है। उम्मीद है इससे आपका काम बनेगा!

आईओएस 9,3

class CustomButton: UIButton { 

    override func intrinsicContentSize() -> CGSize { 
     return titleLabel?.intrinsicContentSize() ?? super.intrinsicContentSize() 
    } 
} 
12

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

button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0.01, bottom: 0.01, right: 0) 

यह भी प्रतीत होता है कि मूल्यों को प्राप्त floor 'घ है, तो आप वास्तव में आंशिक गद्दी नहीं मिलेगा।

+0

मेरे लिए काम किया। धन्यवाद! – chrilith

+0

अजीब चीज यह है कि यह 'इंटरफ़ेस बिल्डर' में वापस '0' तक बदल जाती है, सोचा कि यह '.xib' /' .storyboard' फ़ाइल में सही ढंग से '0.01' पर सेट है। –

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