2011-09-22 9 views
7

मैंNSButton setAlignment

[button setAlignment:NSCenterTextAlignment]; 

इस्तेमाल किया बटन के केंद्र में पाठ प्रदर्शन बनाने के लिए काम नहीं करता।

यह काम किया।

लेकिन अगर मैं कोड, बटन 'setAlignment' से पहले बटन शीर्षक विशेषता निर्धारित काम नहीं करेगा

- (void)setButtonTitle:(NSButton*)button fontName:(NSString*)fontName fontSize:(CGFloat)fontSize fontColor:(NSColor*)fontColor; 
{ 

    NSMutableAttributedString *attributedString = 
    [[NSMutableAttributedString alloc] initWithString:[button title] 
            attributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:fontName size:fontSize] 
                      forKey:NSFontAttributeName]]; 
    [attributedString addAttribute:NSForegroundColorAttributeName 
           value:fontColor 
           range:NSMakeRange(0, [[button title] length])]; 


    [button setAttributedTitle: attributedString]; 
    [button setAlignment:NSCenterTextAlignment];//button title alignment always displayed as 'NSLeftTextAlignment' rather than 'NSCenterTextAlignment'. 

} 

शीर्षक संरेखण हमेशा 'NSLeftTextAlignment' के बजाय 'NSCenterTextAlignment' के रूप में प्रदर्शन किया।

किसी भी टिप्पणी के लिए आपका स्वागत

+0

क्या यह शीर्षक काम करता है यदि शीर्षक का श्रेय नहीं दिया जाता है? शायद आपको जिम्मेदार स्ट्रिंग में संरेखण सेट करने की आवश्यकता है। –

+0

यह शीर्षक काम नहीं करता है, लेकिन मुझे नहीं पता कि जिम्मेदार स्ट्रिंग – monsabre

+0

में संरेखण को कैसे जोड़ना है, मैंने प्रश्न – monsabre

उत्तर

18

आप बटन पुस्तक के लिए जिम्मेदार ठहराया स्ट्रिंग का उपयोग कर रहे हैं, कि स्ट्रिंग में गुण संरेखण स्थापित करने के लिए जिम्मेदार हैं।

केंद्र है कि स्ट्रिंग के लिए जिम्मेदार ठहराया करने के लिए, एक केंद्रित संरेखण मूल्य के साथ एक NSParagraphStyleAttributeName विशेषता जोड़ें: उपरोक्त कोड में

NSMutableParagraphStyle *centredStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; 
[centredStyle setAlignment:NSCenterTextAlignment]; 

NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:centredStyle, 
         NSParagraphStyleAttributeName, 
         [NSFont fontWithName:fontName size:fontSize], 
         NSFontAttributeName, 
         fontColor, 
         NSForegroundColorAttributeName, 
         nil]; 
NSMutableAttributedString *attributedString = 
[[NSMutableAttributedString alloc] initWithString:[button title] 
           attributes:attrs]; 

[button setAttributedTitle: attributedString]; 

, मैं एक ही attrs शब्दकोश जिम्मेदार ठहराया स्ट्रिंग के लिए सभी विशेषताओं पकड़े बना लिया है। आपके कोड से, ऐसा लगता है कि फ़ॉन्ट स्ट्रिंग को पूरी स्ट्रिंग पर लागू किया जाना चाहिए।

+3

संपादित किया है, जवाब बिल्कुल सही है। मैं सिर्फ अपनी निराशा व्यक्त करना चाहता हूं जिसमें मैक पर यूई विकास के संदर्भ में चीजें डिज़ाइन की गई हैं ... मेरा मतलब है ... एक कस्टम रंग केंद्रित टेक्स्ट के साथ बटन रखने के लिए इतना कोड ... यह मजाक कर रहा है हास्यास्पद। ऐप्पल उठाओ !!! –

+0

@RaduSimionescu कोको दुनिया में आपका स्वागत है –

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