2011-12-14 22 views
15

मुझे पता है कि आईबी के साथ बटन के ऊर्ध्वाधर संरेखण को कैसे सेट किया जाए; here देखें। लेकिन मैं इसे प्रोग्राम के रूप में ... यह बातें मैं कोशिश की है में से एक है ऐसा नहीं कर सकते:मैं UIButton के वर्टिकल संरेखण को प्रोग्रामेटिक रूप से कैसे सेट कर सकता हूं - आईओएस

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 110, 130)]; 
[button setTitle:@"Align" forState:UIControlStateNormal]; 
button.backgroundColor = [UIColor whiteColor]; 
button.titleLabel.textColor = [UIColor grayColor]; 
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom]; 

[self.view addSubview:button]; 

[button release]; 

मैं भी सन्निवेश की कोशिश की है ...

लेकिन संरेखण परिवर्तन नहीं होगा।

कृपया ध्यान दें कि मैं बटन के कस्टम स्टाइल को रखना चाहता हूं (मुझे डिफ़ॉल्ट रूप और महसूस नहीं चाहिए)।

उत्तर

1

समस्या उपयोग कर रहा था

button.titleLabel.textColor = [UIColor grayColor]; 
बजाय

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
मेरे कोड मैं अभी भी मुसीबतों कर रहा हूँ में कहीं

खड़ी पाठ संरेखित, लेकिन मैं मिल गया है मूल उदाहरण चल रहा है, इसलिए यदि मैं इसे और अधिक देखता हूं तो मुझे और अधिक जटिल संस्करण प्राप्त करने में सक्षम होना चाहिए। शायद वहाँ अन्य तरीकों मैं button.titleLabel.textColor की तरह उपयोग कर रहा हूँ जो बनाने के लंबवत संरेखण काम नहीं ...

अद्यतन मूल समस्या वास्तव में था क्योंकि मेरे बटन बहुत छोटा (बटन ऊंचाई) था।

The word `husband' is in the button

शब्द husband बटन, जो वर्तमान में खड़ी नीचे करने के लिए गठबंधन किया है में है। लेकिन चूंकि बटन की ऊंचाई पर्याप्त नहीं है, यह स्पष्ट नहीं है। हालांकि शीर्षक इन्सेट और सामग्री इन्सेट्स का डिफ़ॉल्ट शून्य है, ऐसा लगता है कि शीर्षक को नीचे के खिलाफ फ्लश किया जा सकता है। यह मेरे लिए लगभग 5 पिक्सेल की तरह दिखता है। यह सुनिश्चित करने के लिए कि यह सही है, मैंने एक छोटे से फ़ॉन्ट के साथ परीक्षण किया।

दुर्भाग्य से खड़ी शीर्ष करने के लिए पाठ संरेखित कुछ भी बदलने नहीं लगता है ...

9

contentVerticalAlignment जाने का रास्ता है। हो सकता है कि आप बटन कैसे बना रहे हों। इस प्रयास करें:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(10, 10, 110, 130); 
// rest of your code 
// don't release button explicitly 
+0

+1 मेरे प्रश्न का उत्तर देने के लिए 100%। लेकिन मैं आपको टिक नहीं दूँगा क्योंकि आपने मेरा दिमाग नहीं पढ़ा ... क्षमा करें, मुझे प्रश्न को बेहतर तरीके से निर्दिष्ट करना चाहिए था। मैं कस्टम प्रकार भी रखना चाहता हूं। मैं इसे प्रतिबिंबित करने के लिए अपने प्रश्न को संशोधित करूंगा। यदि कोई बेहतर उत्तर नहीं आती है तो मैं आपको टिक दूंगा। चीयर्स। –

+0

दिलचस्प बात यह है कि जब आप (गलत तरीके से) शीर्षक लेबल का उपयोग करके फ़ॉन्ट रंग बदलते हैं (सेटटाइटलर संदेश भेजने की बजाय) –

+0

इस समस्या से कोई लेना-देना नहीं है लेकिन आपको अभी भी बटन बनाने के लिए 'बटनविथ टाइप' का उपयोग करना चाहिए । किसी भी प्रकार का ठीक है 'बटनविथ टाइप: UIButtonTypeCustom' सहित। – XJones

1

आप आसानी से UIButton के भीतर पाठ लेबल में हेरफेर कर सकते हैं। यहाँ कैसे आप यह कर सकते हैं:

  1. सेट @ करने के लिए बटन का पाठ "" (रिक्त स्ट्रिंग)
  2. नई UILabel बनाने और इसे फ्रेम
  3. subview के रूप में बनाया UILabel बटन के दृष्टिकोण के अंदर डालने
  4. यह है समायोजित किया हुआ। अब आप प्रोग्राम की रूप से आंतरिक फ्रेम को बदलने के साथ आंतरिक UILabel की स्थिति सेट कर सकते हैं।
18

आप संरेखण कर सकते हैं (क्षैतिज और ऊर्ध्वाधर) इस तरह से बटन का पाठ:

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 70)]; 
     button.backgroundColor = [UIColor whiteColor]; 
     button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
     button.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom; 
     [button setTitle:@"Align" forState:UIControlStateNormal]; 
     [self.container addSubview:button]; 
+0

अच्छा, हम बटन की छवि को भी संरेखित कर सकते हैं। –

0

मैं एक बेहतर तरीका है कि मेरे लिए काम करता पाया। मैं एक कस्टम फ़ॉन्ट का उपयोग कर रहा हूं ताकि संरेखण कुछ ऊपर lindon fox's उत्तर में थोड़ा सा हो गया।

आप के अंदर UIButton उपवर्ग:

- (void)layoutSubviews { 

     [super layoutSubviews]; 

     if (UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, self.titleEdgeInsets)) { 

      // adjust top, left bottom, and right to fit your needs 
      self.titleEdgeInsets = UIEdgeInsetsMake(top, left, bottom, right); 
     } 
} 

मैं अन्य उत्तर कि UIControlContentVerticalAlignmentCenter करने के लिए contentVerticalAlignment सेट का उपयोग भी एक अच्छा विचार है के साथ सहमत हैं।

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