2013-06-12 13 views
14

का उपयोग करते समय डिफ़ॉल्ट UIButton पैडिंग को कैसे बदलें IOS 6 में ऑटो-लेआउट का उपयोग करते समय, UIButton के अंतर्निहित सामग्री आकार में बटन टेक्स्ट के आस-पास लगभग 10px पैडिंग शामिल होता है। क्या इस पैडिंग मूल्य को नियंत्रित करने का कोई तरीका है? उदाहरण के लिए, मैं इस तरह कुछ करने के लिए सक्षम होने के लिए है, जो हर तरफ 5px को गद्दी स्थापित करेगा चाहते हैं:ऑटो-लेआउट

[button setPadding:UIEdgeInsetsMake(5, 5, 5, 5)]; 

मैं contentEdgeInsets, titleEdgeInsets, और imageEdgeInsets स्थापित करने की कोशिश की है, कोई लाभ नहीं हुआ सब। विचित्र रूप से, contentEdgeInsets में ऋणात्मक बाएं या दाएं मान निर्दिष्ट करना कुछ प्रभाव पड़ता है, लेकिन शीर्ष या नीचे नहीं।

किसी भी तरह से, मैं वास्तविक संख्या के रूप में वास्तविक पैडिंग मान निर्दिष्ट करने में सक्षम होना चाहता हूं, न कि डिफ़ॉल्ट संख्या के रूप में व्यक्त डिफ़ॉल्ट को समायोजन। किसी को पता है कि यह संभव है या नहीं?

उत्तर

7

मुझे लगता है कि मैं दो साल पहले इस प्रश्न पोस्ट, लेकिन मैं पालन करना चाहता था और ध्यान दें कि contentEdgeInsets संपत्ति अब ऑटोलायआउट के साथ सही ढंग से काम करने लगती है। उदाहरण के लिए, निम्न कोड इसकी सामग्री के आस-पास 20-पिक्सेल मार्जिन वाला बटन बनाता है:

button.contentEdgeInsets = UIEdgeInsetsMake(20, 20, 20, 20); 
3

मुझे यकीन नहीं है कि आप UIButton subclassing के बिना ऐसा कर सकते हैं। आप उपवर्ग के लिए तैयार हैं, तो इस विधि चाल हो सकती अधिभावी (मैं इस प्रयास नहीं किया है):

- (UIEdgeInsets)alignmentRectInsets { return UIEdgeInsetsMake(5, 5, 5, 5); }

+0

एक आकर्षण की तरह काम करता है! –