2011-02-05 17 views
27

मैं यूआईबटन को आकार UIButtonTypeCustom (आकार के लिए) के साथ बनाना चाहता हूं। मैं बटन.titleLabel का उपयोग करके शीर्षक असाइन करना चाहता हूं क्योंकि मुझे फ़ॉन्ट निर्दिष्ट करने की आवश्यकता है। निम्न कोड ऐसा लगता है कि इसे काम करना चाहिए, लेकिन नहीं - कोई लेबल दिखाई नहीं देता है, अवधि।आईओएस: यूआईबटन शीर्षक लेबल - क्या यह कुछ भी करता है?

UIImage *editButtonImage = [UIImage imageNamed: @"editButton.png"]; 
float width = editButtonImage.size.width; 
float height = editButtonImage.size.height; 

UIButton *editButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
editButton.frame = CGRectMake(0, 0, width, height); 
[editButton setBackgroundImage: editButtonImage forState: UIControlStateNormal]; 
editButton.adjustsImageWhenHighlighted = YES; 
editButton.titleLabel.text = @"Edit"; 
editButton.titleLabel.textColor = [UIColor whiteColor]; 
editButton.titleLabel.textAlignment = UITextAlignmentCenter; 
editButton.titleLabel.font = [UIFont fontWithName: @"Helvetica" size: 14]; 
[self.view addSubview: editButton]; 

हर कोई हमेशा सेटटाइट का उपयोग करने के लिए कहता है: forState: लेकिन यह आपको एक फ़ॉन्ट देता है जो मुझे पसंद नहीं है। शीर्षक लेबल विधि को बहिष्कृत नहीं किया गया है - इसे काम करना चाहिए।

मैंने इस बार कई बार भाग लिया है और हमेशा इसके आसपास काम किया है, लेकिन मैं वास्तव में इसे समझना चाहता हूं। कोई विचार?

उत्तर

79

titleLabel की text इस तरह की संपत्ति का कोई प्रभाव नहीं पड़ता है। इसके बजाय, बटन पर -setTitle:forState: फोन:

[editButton setTitle:@"Edit" forState:UIControlStateNormal] 

इस का कारण यह है बटन विभिन्न राज्यों (जैसे, UIControlStateDisabled, UIControlStateHighlighted) के लिए अलग खिताब हो सकता है क्योंकि। UIControlStateNormal नियंत्रण स्थिति के लिए संपत्ति सेट करना सभी राज्यों पर लागू होगा यदि आप दूसरों को स्पष्ट रूप से निर्दिष्ट नहीं करते हैं।

UIButton के लिए दस्तावेज़ प्रति

:

इस वर्ग के शीर्षक, छवि, और एक बटन के अन्य उपस्थिति गुण स्थापित करने के लिए तरीके प्रदान करता है। इन एक्सेसर्स का उपयोग करके, आप प्रत्येक बटन स्थिति के लिए एक अलग उपस्थिति निर्दिष्ट कर सकते हैं।

आप राज्य के आधार पर लेबल के रंग और छाया रंग को अनुकूलित कर सकते हैं। क्रमशः -setTitleColor:forState और -setTitleShadowColor:forState देखें। titleLabel पर textAlignment और font पर शेष गुणों को काम करना चाहिए क्योंकि आपने उन्हें अभी सेट किया है और सभी नियंत्रण राज्यों पर लागू होना चाहिए।

विशेष रूप से, के लिए दस्तावेज़ देखें UIButton के titleLabel संपत्ति: https://developer.apple.com/documentation/uikit/uibutton/1623992-titlelabel

titleLabel ही है केवल पढ़ने के लिए, लेकिन इसका मतलब यह नहीं है कि आप इस तरह के फ़ॉन्ट के रूप में अपने स्वयं के गुण के मूल्यों, नहीं बदल सकते, लाइन ब्रेक मोड, आदि

+1

तो एक चीज जिसे आप शीर्षक लेबल का उपयोग करके सेट नहीं कर सकते हैं वह वास्तविक टेक्स्ट मान है। यह मेरे लिए थोड़ा अजीब लगता है, लेकिन ठीक है। – Amagrammer

+4

यह पहले थोड़ा सा counterintuitive है। जाहिर है, लेबल की 'टेक्स्ट' प्रॉपर्टी सेट करना' -setTitle: forState' को कॉल करने के लिए शॉर्टकट होगा, लेकिन ऐसा नहीं है। – LucasTizma

+2

इसी तरह ऐसा लगता है कि आप टेक्स्ट लेबल को सीधे लेबल लेबल की सेट नहीं कर सकते हैं, लेकिन setTitleColor: forState: method का उपयोग करना होगा। इसका उल्लेख करने के लिए धन्यवाद, क्योंकि यह दस्तावेज़ीकरण में नहीं है। – arlomedia

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