UIBarButtonItem का फ़ॉन्ट बदलें


139

UIBarButtonItem के साथ UIToolbar

मैं UIBarButtonItemअपने UIToolbarशीर्षक Done में a । अब मैं डिफ़ॉल्ट को "ट्रेबुशेट एमएस" पर बोल्ड के साथ फ़ॉन्ट बदलना चाहता हूं । मैं उसे कैसे कर सकता हूँ?

जवाबों:


126

क्योंकि UIBarButtonItem UIBarItem से विरासत में मिला है, आप कोशिश कर सकते हैं

- (void)setTitleTextAttributes:(NSDictionary *)attributes
                  forState:(UIControlState)state

लेकिन यह केवल iOS5 के लिए है। IOS 3/4 के लिए, आपको एक कस्टम दृश्य का उपयोग करना होगा।


214

सटीक होने के लिए, यह नीचे किया जा सकता है

[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
    [UIColor greenColor], NSForegroundColorAttributeName,
    nil] 
                          forState:UIControlStateNormal];

या वस्तु शाब्दिक वाक्य रचना के साथ:

[buttonItem setTitleTextAttributes:@{
     NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
     NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];

सुविधा के लिए, यहाँ स्विफ्ट कार्यान्वयन है:

buttonItem.setTitleTextAttributes([
        NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
        NSAttributedStringKey.foregroundColor: UIColor.green],
    for: .normal)

2
NSFontAttributeName का उपयोग UITextAttributeFont के बजाय किया जाना चाहिए, और NSForegroundColorAttributeName का स्थान IIT7 के लिए विकसित होने पर UITextAttributeTextColor के बजाय होना चाहिए।
रज़

126

पूरे ऐप में UIAppearanceअपने UIBarButtonItemफॉन्ट को स्टाइल करने के इच्छुक लोगों के लिए , इस कोड की लाइन का उपयोग करके इसे पूरा किया जा सकता है:

उद्देश्य सी:

NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];

स्विफ्ट 2.3:

UIBarButtonItem.appearance().setTitleTextAttributes(
[
    NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
    NSForegroundColorAttributeName : UIColor.white
],
for: .normal)

स्विफ्ट 3

UIBarButtonItem.appearance().setTitleTextAttributes(
[
    NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
    NSForegroundColorAttributeName : UIColor.white,
], for: .normal)

स्विफ्ट 4

UIBarButtonItem.appearance().setTitleTextAttributes(
[
    NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
    NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)

या एक एकल UIBarButtonItem (सभी ऐप के लिए विस्तृत नहीं) के लिए, यदि आपके पास विशेष रूप से एक बटन के लिए एक कस्टम फ़ॉन्ट है:

स्विफ्ट 3

let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
    NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
    NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"

स्विफ्ट 4

let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
    NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
    NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"

बेशक, आप फ़ॉन्ट और आकार बदल सकते हैं जो आप चाहते हैं। मैं इस कोड AppDelegate.mको didFinishLaunchingWithOptionsअनुभाग में फ़ाइल में रखना पसंद करता हूं ।

उपलब्ध विशेषताएँ (बस उन्हें जोड़ें NSDictionary):

  • NSFontAttributeName: एक के साथ फ़ॉन्ट बदलें UIFont
  • NSForegroundColorAttributeName: ए के साथ रंग बदलें UIColor
  • NSShadow: एक छाया जोड़ें ( वर्ग संदर्भ देखें NSShadow)

(IOS7 + के लिए अपडेट किया गया)


3
UITextAttribute .. कुंजियों को iOS7 के रूप में चित्रित किया गया है। इसके बजाय NSFontAttribute ... और NSForeground ... आदि का उपयोग करें।
इमैनुएल अय

2
मैंने iOS7 में पेश किए गए अपग्रेडेशन के लिए अपडेट किया है। सिर के लिए धन्यवाद, @EmanmanuelAy!
rog

1
बहुत खुबस! मेरा ऐप अब सुंदर दिख रहा है (ठीक है, मेरे अपने तरीके से !! !!: पी) धन्यवाद
सेप्टिक क्रॉनिक

20

स्विफ्ट में आप इसका अनुसरण इस प्रकार करेंगे:

backButtonItem.setTitleTextAttributes([
        NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
        NSForegroundColorAttributeName : UIColor.blackColor()],
    forState: UIControlState.Normal)

1
फ़ॉन्ट के बाद विस्मयादिबोधक चिह्न (!) मत भूलना। त्रुटि संदेश: "'_' 'स्ट्रिंग' के लिए परिवर्तनीय नहीं है" वास्तव में उपयोगी नहीं है।
सर्यॉन

17

ये ऊपर महान जवाब हैं। बस iOS7 के लिए अपडेट कर रहा है:

NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
    [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];

16

Swift3

  buttonName.setAttributedTitle([
        NSFontAttributeName : UIFont.systemFontOfSize(18.0),
        NSForegroundColorAttributeName : UIColor.red,NSBackgroundColorAttributeName:UIColor.black],
                                     forState: UIControlState.Normal)

तीव्र

   barbutton.setTitleTextAttributes([
        NSFontAttributeName : UIFont.systemFontOfSize(18.0),
        NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()],
        forState: UIControlState.Normal)

उद्देश्य सी

     [ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
        [UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName,
        [UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName,
        nil]
        forState:UIControlStateNormal];

8

कुछ के लिए ऐसा करने के लिए, UIBarButtonItemsलेकिन सभी मैं निम्नलिखित दृष्टिकोण की सलाह नहीं देता।

  1. एक UIBarButtonItemउपवर्ग बनाएँ । इसमें कुछ भी न जोड़ें - आप इसे केवल स्टोरीबोर्ड में एक कस्टम क्लास के रूप में और इसकी उपस्थिति प्रॉक्सी के लिए उपयोग करेंगे ...
  2. अपने स्टोरीबोर्ड में, UIBarButtonItemsअपने उपवर्ग में वांछित सभी के लिए कस्टम वर्ग बदलें
  3. अपने AppDelegate में अपने UIBarButtonItemउपवर्ग को आयात करें और निम्न पंक्ति को इसमें जोड़ेंapplication:didFinishLaunchingWithOptions:

मेरे मामले में मैंने UIBarButtonItemपाठ को बंद करने के एकमात्र उद्देश्य के लिए उप- वर्गित किया:

[[BoldBarButtonItem appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil] 
                                              forState:UIControlStateNormal];

8

में स्विफ्ट 4 , आप फ़ॉन्ट और का रंग बदल सकते UIBarButtonItemनिम्नलिखित कोड जोड़कर।

addTodoBarButton.setTitleTextAttributes(
        [
        NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
        NSAttributedStringKey.foregroundColor: UIColor.black
        ], for: .normal)

4

यह सही तरीका है: अपने barButtonItem (इस मामले में rightBarButtonItem) को घोषित करें और इसे setTitleTextAttributes जोड़ें।

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))

शीर्षक विशेषताएँ जोड़ने के बाद

navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)

आप आकार, वजन (.bold, .heavy, अनियमित आदि) और रंग को पसंद करते हैं जिसे आप पसंद कर सकते हैं…


3

स्विफ्ट 5 कार्यान्वयन

rightButtonItem.setTitleTextAttributes([
            NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
            NSAttributedString.Key.foregroundColor: UIColor.green],
        for: .normal)

2

स्विफ्ट 3

barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal) 

1

पूरे ऐप में:

if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
        UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)

    }

0

UIBarButtonफ़ॉन्ट बदलने से संबंधित संपत्ति नहीं है। लेकिन आप कस्टम फ़ॉन्ट के साथ एक बटन बना सकते हैं और फिर UIBarButton में जोड़ सकते हैं। यह आपकी समस्या का समाधान हो सकता है


0

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

यदि आप प्रोग्रामेटिक रूप से ड्रैग-एंड-ड्रॉप के साथ बटन बनाना चाहते हैं, तो आप इंटरफ़ेस बिल्डर में एक टूलबार या नेविगेशन बार पर एक यूआईब्यूटॉन को भी खींच सकते हैं।

दुर्भाग्य से इसका मतलब है बटन बैकग्राउंड इमेज खुद बनाना। IOS5 से पहले एक मानक UIBarButtonItem के फ़ॉन्ट को अनुकूलित करने का कोई तरीका नहीं है।


0

आप एक UIViewप्रोग्राम प्रोग्राम बना सकते हैं :

UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];

फिर अपने कस्टम दृश्य में चित्र, लेबल या जो कुछ भी आप चाहें, जोड़ें:

[buttonItemView addSubview:customImage];

[buttonItemView addSubview:customLabel];

...

अब इसे अपने अंदर डालें UIBarButtomItem

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];

और अंत में barButtonItem को आप नेविगेशन बार में जोड़ें।


0

पूरा करने के लिए मैं इस विधि को जोड़ना चाहूंगा, अभी भी 2019 में ऑब्जेक्टिव-सी में उपयोग किया जाता है। :)

_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_titleLabel.text = _titleBarButtonItem.title;
_titleLabel.textColor = UIColor.whiteColor;
_titleLabel.font = [UtilityMethods appFontProDisplayBold:26.0];

[_titleLabel sizeToFit];
UIBarButtonItem *titleLabelItem = [[UIBarButtonItem alloc] initWithCustomView:_titleLabel];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.