iPhone नेविगेशन बार शीर्षक पाठ का रंग


283

ऐसा लगता है कि iOS नेविगेशन बार टाइटल का रंग डिफ़ॉल्ट रूप से सफेद है। क्या इसे अलग रंग में बदलने का कोई तरीका है?

मुझे इसकी जानकारी है navigationItem.titleView एक छवि का उपयोग करते हुए दृष्टिकोण से । चूंकि मेरे डिजाइन कौशल सीमित हैं और मैं मानक चमकदार पाने में विफल रहा, इसलिए मैं टेक्स्ट रंग बदलना पसंद करता हूं।

किसी भी जानकारी के लिए बहुत सराहना की जाएगी।


मैंने बस स्टीवन फिशर के जवाब के आधार पर कोड का एक टुकड़ा पोस्ट किया, जो आपके नेविगेशन बार में कस्टम रंगीन शीर्षक जोड़ने की प्रक्रिया को सरल करता है। यह शीर्षक बदलने का भी समर्थन करता है। ढूँढो! यह आपको निराश नहीं करेगा।
एरिक बी

1
एरिक: मैंने आपके उत्तर के बारे में एक नोट मेरे साथ रखा है। मैं आपके उत्तर को आपके कोड के साथ अपडेट करूंगा, लेकिन मैं आपके वोट नहीं लेना चाहूंगा। चतुर समाधान, btw।
स्टीवन फिशर

जवाबों:


423

आधुनिक दृष्टिकोण

संपूर्ण नेविगेशन कंट्रोलर के लिए आधुनिक तरीका ... एक बार ऐसा करें, जब आपके नेविगेशन कंट्रोलर का रूट दृश्य लोड हो।

[self.navigationController.navigationBar setTitleTextAttributes:
   @{NSForegroundColorAttributeName:[UIColor yellowColor]}];

हालाँकि, बाद के विचारों में इसका प्रभाव नहीं दिखता है।

क्लासिक दृष्टिकोण

पुराना तरीका, प्रति दृश्य नियंत्रक (ये स्थिरांक iOS 6 के लिए हैं, लेकिन यदि आप इसे iOS 7 उपस्थिति पर प्रति दृश्य नियंत्रक के अनुसार करना चाहते हैं, तो आप एक ही दृष्टिकोण चाहते हैं, लेकिन विभिन्न स्थिरांक के साथ):

आप एक उपयोग करने की आवश्यकता UILabelके रूप में titleViewकी navigationItem

लेबल चाहिए:

  • एक स्पष्ट पृष्ठभूमि रंग ( label.backgroundColor = [UIColor clearColor]) है।
  • बोल्ड 20pt सिस्टम फ़ॉन्ट ( label.font = [UIFont boldSystemFontOfSize: 20.0f]) का उपयोग करें ।
  • 50% अल्फा ( label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]) के साथ काले रंग की छाया रखें ।
  • आप करने के साथ ही केंद्रित (पाठ संरेखण सेट करना चाहेंगे label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterपुराने SDK का)।

लेबल टेक्स्ट रंग सेट करें जो भी कस्टम रंग आप चाहते हैं। आप ऐसा रंग चाहते हैं जिससे टेक्स्ट छाया में न जाए, जिसे पढ़ना मुश्किल होगा।

मैंने इसे परीक्षण और त्रुटि के माध्यम से काम किया, लेकिन मैं जिन मूल्यों के साथ आया था, वे अंततः उनके लिए बहुत सरल हैं कि Apple ने क्या नहीं चुना। :)

आप इस की पुष्टि करना चाहते हैं, इस कोड ड्रॉप initWithNibName:bundle:में PageThreeViewController.mकी एप्पल के NavBar नमूना । यह पाठ को पीले लेबल के साथ बदल देगा। यह रंग को छोड़कर, Apple के कोड द्वारा निर्मित मूल से अप्रभेद्य होना चाहिए।

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // this will appear as the title in the navigation bar
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = NSTextAlignmentCenter;
                           // ^-Use UITextAlignmentCenter for older SDKs.
        label.textColor = [UIColor yellowColor]; // change this color
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"PageThreeTitle", @"");
        [label sizeToFit];
    }

    return self;
}

संपादित करें: इसके अलावा, एरिक बी का जवाब नीचे पढ़ें। मेरा कोड प्रभाव दिखाता है, लेकिन उसका कोड मौजूदा दृश्य नियंत्रक पर इसे गिराने का एक सरल तरीका प्रदान करता है।


2
यदि आप लेबल फ़्रेम को इसके पाठ के आकार का उपयोग करके सेट करते हैं sizeWithFont:, तो यह जादुई रूप से मानक लेबल के स्वचालित संरेखण व्यवहार पर ले जाएगा।
grahamparks

1
लेकिन अगर आप sizeToFit का उपयोग करते हैं, तो आप स्वचालित ट्रंकेशन खो देंगे।
स्टीवन फिशर

3
नोट: यह कस्टम शीर्षक सेट करने का एक पुराना तरीका है, मैं एरिक बी का जवाब पढ़ने का सुझाव देता हूं
एलिया पाल्मे

1
पुष्टि की कि sizeToFit काम करता है, इसलिए अद्यतन उत्तर। इसके अलावा, एरिक बी का जवाब पढ़ने के लिए जोड़ा गया नोट।
स्टीवन फिशर

1
label.textAlignment = UITextAlignmentCenter को iOS6.0 के बाद से हटा दिया गया है, इसके बजाय NSTextAlignmentCenter का उपयोग करें
जैस्पर

226

मुझे पता है कि यह एक बहुत पुराना धागा है, लेकिन मुझे लगता है कि नए उपयोगकर्ताओं के लिए यह जानना उपयोगी होगा कि iOS 5 शीर्षक गुण स्थापित करने के लिए एक नई संपत्ति लाता है।

आप UINavigationBar का उपयोग कर सकते हैं setTitleTextAttributes फ़ॉन्ट, रंग, ऑफसेट और छाया रंग सेट करने लिए ।

इसके अलावा, आप UINavigationBarsअपने पूरे एप्लिकेशन के लिए एक ही डिफ़ॉल्ट UINavigationBar का शीर्षक पाठ गुण सेट कर सकते हैं ।

उदाहरण के लिए ऐसा:

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [UIColor whiteColor],UITextAttributeTextColor, 
                                            [UIColor blackColor], UITextAttributeTextShadowColor, 
                                            [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

11
'UITextAttributeTextColor' को iOS 7 में दर्शाया गया है। iOS 7 कुंजी 'NSForegroundColorAttributeName' है
Keller

1
ध्यान दें कि यह सभी नेविगेशन बार को बदल देगा, जो आमतौर पर आप वैसे भी चाहते हैं।
ऐश

1
कृपया इसे सही उत्तर के रूप में चिह्नित करें - उपर्युक्त यूआईबेल विधि इन विधियों के साथ अनावश्यक है।
Mic Fok

180

IOS 5 में आप इस तरह से नेविगेशनबार शीर्षक रंग बदल सकते हैं:

navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

8
@BartSimpson मैं सहमत हूँ! IOS 7 के लिए, अपडेट UITextAttributeTextColorकरें NSForegroundColorAttributeName। एक जादू की तरह काम करता है!
जॉन एर्क

यह काम! मैं समझना चाहता हूँ कि कैसे है ?! titleTextAttributes 'NSString UIKit Additions Reference' के तहत उल्लिखित 'कुंजी फॉर टेक्स्ट एट्रीब्यूट डिक्लेयर' में बताई गई चाबियों के पूर्वनिर्धारित सेट के साथ एक शब्दकोश को स्वीकार करता है। यह आपके द्वारा बताई गई कुंजी को कैसे लेता है।
ऐसएन

... और चूंकि यह काम कर रहा है, मुझे 'डिफ़ॉल्ट' टिंट कैसे मिलेगा?
ऐसएन

सेटिंग self.navigationController.navigationBar.tintColorमेरे लिए काम नहीं किया। इसने किया।
JRam13

127

स्टीवन फिशर के जवाब के आधार पर मैंने यह कोड लिखा था:

- (void)setTitle:(NSString *)title
{
    [super setTitle:title];
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor yellowColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

इस कोड का लाभ, फ्रेम से ठीक से निपटने के अलावा, यह है कि यदि आप अपने नियंत्रक के शीर्षक को बदलते हैं तो कस्टम शीर्षक दृश्य भी अपडेट हो जाएगा। इसे मैन्युअल रूप से अपडेट करने की आवश्यकता नहीं है।

एक और बड़ा लाभ यह है कि यह कस्टम शीर्षक रंग को सक्षम करने के लिए वास्तव में सरल बनाता है। आपको बस इस विधि को नियंत्रक से जोड़ना है।


3
मैं मानता हूं कि यह निश्चित रूप से सबसे अच्छा समाधान है। SizeWithFont का उपयोग करने की आवश्यकता नहीं है, और मुझे सेटटाइल विधि को ओवरराइड करने का विचार पसंद है।
एलिया पालमे

@ Sr.ichie आपको कस्टम नेविगेशन कंट्रोलर में कोड नहीं डालना चाहिए। आपको इसे सभी दृश्य नियंत्रकों में रखना चाहिए जहां आपको शीर्षक का रंग बदलने की आवश्यकता है। आप शायद एक कस्टम नेविगेशन नियंत्रक भी नहीं चाहते हैं।
एरिक बी

मेरे लिए काम नहीं करता है। मुझे लगता है कि मैं इसका इस्तेमाल किया क्योंकि [UINavigationBar उपस्थिति] विधि .. (काम नहीं करता है क्योंकि लेबल शीर्षक हमेशा शून्य है)
Matej

1
यदि आप iOS5 या उसके बाद के हैं, तो आपको नीचे दिए गए ऋण का उत्तर पढ़ना चाहिए। एक-लाइनर है जो ठीक काम करता है और आरक्षण पर रहता है।
algal

हमें self.title = @ "our string" को जोड़ना होगा; viewDidLoad.then में केवल उपरोक्त कोड काम करता है।
हरि1251

40

उपरोक्त अधिकांश सुझावों को अब आईओएस 7 उपयोग के लिए हटा दिया गया है -

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                               [UIColor whiteColor],NSForegroundColorAttributeName, 
                               [UIColor whiteColor],NSBackgroundColorAttributeName,nil];

self.navigationController.navigationBar.titleTextAttributes = textAttributes;
self.title = @"Title of the Page";

इसके अलावा, विभिन्न टेक्स्ट संपत्तियों के लिए NSAttributedString.h चेकआउट करें जो सेट किए जा सकते हैं।


38

IOS 7 और 8 में, आप हरे रंग को कहने के लिए शीर्षक का रंग बदल सकते हैं

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor greenColor] forKey:NSForegroundColorAttributeName];

6
स्विफ्ट:self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
बायरन कोएत्से

@ByronCoetsee 2 के अपडेट के बाद स्विफ्ट 2 में मेरी निम्नलिखित त्रुटि है: प्रकार का मान निर्दिष्ट नहीं कर सकता '' [NSObject: AnyObject] 'का मान टाइप करने के लिए' [स्ट्रिंग: AnyObject? '
जॉर्ज कैसिएगो

2
स्विफ्ट 2.0 में आसान हैself.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
केविन डिट्रालिया

24

प्रश्न को अद्यतन रखने के लिए, मैं एलेक्स आरआर समाधान जोड़ूंगा , लेकिन स्विफ्ट में :

self.navigationController.navigationBar.barTintColor = .blueColor()
self.navigationController.navigationBar.tintColor = .whiteColor()
self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.whiteColor()
]

जिसके परिणामस्वरूप:

यहां छवि विवरण दर्ज करें


हम्म, शायद यह स्विफ्ट 2.0 के लिए काम नहीं करता है। मुझे दोगुना करने दो। हालांकि आक्रामकता की कोई जरूरत नहीं है।
मीकल

माफ़ करना माछल, मैं सोच रहा था कि मजाक के रूप में! नहीं के रूप में कुछ आक्रामक! : [AnyObject NSObject] self.navigationController .navigationBar.titleTextAttributes = NSDictionary (वस्तु:: UIColor.whiteColor (), forKey NSForegroundColorAttributeName) के रूप में मेरे लिए क्या काम किया और अधिक की तरह यह था
राडू

इसे निम्नलिखित पंक्ति में जोड़ें: UINavigationBar.appearance ()। BarStyle = UIBarStyle.Black इस पंक्ति से पहले: UINavigationBar.appearance ()। TintColor = Uintolor.whiteColor () बनाने के लिए tintColor काम करें!
triiiiista

2
स्विफ्ट 4.0 में: self.navigationController; .navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
अभय मुकेशेश्वर


13

यदि आप किसी पृष्ठ पर रंग बदलने का प्रयास कर रहे हैं तो tewha द्वारा समाधान अच्छी तरह से काम करता है, लेकिन मैं हर पृष्ठ पर रंग बदलने में सक्षम होना चाहता हूं। मैंने कुछ छोटे संशोधन किए ताकि यह सभी पृष्ठों पर काम करेUINavigationController

NavigationDelegate.h

//This will change the color of the navigation bar
#import <Foundation/Foundation.h>
@interface NavigationDelegate : NSObject<UINavigationControllerDelegate> {
}
@end

NavigationDelegate.m

#import "NavigationDelegate.h"
@implementation NavigationDelegate

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    CGRect frame = CGRectMake(0, 0, 200, 44);//TODO: Can we get the size of the text?
    UILabel* label = [[[UILabel alloc] initWithFrame:frame] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    //The two lines below are the only ones that have changed
    label.text=viewController.title;
    viewController.navigationItem.titleView = label;
}
@end

13

आईओएस 5 के बाद से हमें टाइटल टेक्स्ट कलर और नेविगेशन बार के फॉन्ट को टाइटल टेक्सट्यूट डिवेलपमेंट (यूएवीगेशन कंट्रोलर क्लास रेफरेंस में पूर्वनिर्धारित डिक्शनरी) का उपयोग करके सेट करना है।

 [[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor blackColor],UITextAttributeTextColor, 
[UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];

13

स्विफ्ट संस्करण

मैंने पाया कि आप में से अधिकांश लोगों ने Objective_C संस्करण के उत्तर प्रस्तुत किए हैं

मैं जिस किसी को भी ज़रूरत है, उसके लिए स्विफ्ट का उपयोग करके इस फ़ंक्शन को लागू करना चाहूंगा।

ViewDidload में

1. बनाने के लिए NavigationBar पृष्ठभूमि रंग हो जाता है (उदाहरण के लिए: BLUE)

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

2. नेविगेशन के लिए पृष्ठभूमि बनाएं छवि बन जाती है (उदाहरण के लिए: ABC.png)

let barMetrix = UIBarMetrics(rawValue: 0)!

self.navigationController?.navigationBar
      .setBackgroundImage(UIImage(named: "ABC"), forBarMetrics: barMetrix)

3.To परिवर्तन नेविगेशनबार शीर्षक (उदाहरण के लिए: [Font: Futura, 10] [रंग: लाल]:

navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName : UIColor.redColor(),
            NSFontAttributeName : UIFont(name: "Futura", size: 10)!
        ]

(संकेत 1: UIFont के बाद "!" निशान को न भूलें

(संकेत 2: शीर्षक पाठ की बहुत सारी विशेषताएँ हैं, "NSFontAttributeName" पर क्लिक करें, आप कक्षा में प्रवेश कर सकते हैं और कीनेम और उन वस्तुओं के प्रकार देख सकते हैं जिनकी उन्हें आवश्यकता है)

मुझे आशा है कि मैं मदद कर सकता हूँ!


10

नीचे दिए गए कोड का उपयोग किसी भी व्यू कंट्रोलर व्यूडीडलड या व्यूविलेयर विधि में करें।

- (void)viewDidLoad
{
    [super viewDidLoad];

    //I am using UIColor yellowColor for an example but you can use whatever color you like   
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

    //change the title here to whatever you like
    self.title = @"Home";
    // Do any additional setup after loading the view.
}


8

यह मेरा समाधान स्टीवंस पर आधारित है

केवल वास्तविक अंतर है मैंने स्थिति को समायोजित करने के लिए कुछ संभाल रखी है यदि पाठ की लंबाई के आधार पर लगता है कि यह सेब के समान है

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

आप अपने फ़ॉन्ट आकार के आधार पर 10 मान समायोजित करना चाह सकते हैं


6

मैं अपने नेवी के बटन को केंद्र से बाहर फेंकते समय समस्या में भाग गया (जब आपके पास केवल एक बटन होता है)। यह तय करने के लिए कि मैंने अपना फ्रेम आकार ऐसा बदला है:

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);

6

मैंने नेविगेशनबेर की पृष्ठभूमि छवि और बाएं बटन आइटम को अनुकूलित किया है, और ग्रे शीर्षक पृष्ठभूमि में फिट नहीं है। तब मैं उपयोग करता हूं:

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

टिंट रंग को ग्रे में बदलने के लिए। और शीर्षक अब सफेद है! मैं यही चाहता था।

आशा है कि मदद करने के लिए भी :)


अच्छा है, लेकिन यह केवल पाठ को सफेद में बदलने के लिए काम करता है। यहां तक ​​कि [UIColor whiteColor] के साथ नेवर को टिन्ट करने से टेक्स्ट का रंग सफेद हो जाता है।
cschuff

6

सेल्फ टाइटल सेट करने की अनुशंसा की जाती है क्योंकि इसका उपयोग चाइल्ड नेवबार को पुश करने या टैबबार्स पर शीर्षक दिखाने के लिए किया जाता है।

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    }
}

6

यह एक बहुत पुराना धागा है, लेकिन आईओएस 7 के लिए नेविगेशन बार टाइटल के कलर, साइज और वर्टिकल पोजिशन के लिए उत्तर देने के बारे में सोचता हूं।

रंग और आकार के लिए

 NSDictionary *titleAttributes =@{
                                NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
                                NSForegroundColorAttributeName : [UIColor whiteColor]
                                };

ऊर्ध्वाधर स्थिति के लिए

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10.0 forBarMetrics:UIBarMetricsDefault];

शीर्षक सेट करें और विशेषताएँ शब्दकोश असाइन करें

[[self navigationItem] setTitle:@"CLUBHOUSE"];
self.navigationController.navigationBar.titleTextAttributes = titleAttributes;

5

यह स्विफ्ट में मेरे लिए काम करता है:

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white]

बहुत करीब है, लेकिन बात यह है कि आपका तरीका शीर्षक पर पहले से मौजूद सभी संभावित विशेषताओं को अधिलेखित कर देगा। मेरे मामले में वह फॉन्ट था। मेरे साथ समाप्त हुआ कोड थाnavigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
मैटिक ओब्लाक

अच्छा काम करता है। self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
ओब्ज


4
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];

3

शीर्षक के फ़ॉन्ट आकार को सेट करने के लिए मैंने निम्नलिखित शर्तों का उपयोग किया है .. शायद किसी को भी मददगार

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;

3

कम शोर के लिए नए iOS 7 पाठ विशेषताओं और आधुनिक उद्देश्य c का उपयोग करते हुए एलेक्स आरआर की पोस्ट के लिए एक अपडेट:

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow};

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

3

मेरा मानना ​​है कि रंग के सेट करने का उचित तरीका UINavigationBarहै:

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

ऊपर लिखा गया कोड उपवर्ग पर है UINavigationBar, जाहिर है कि उपवर्ग के बिना भी काम करता है।


सही है, लेकिन आईओएस 5 केवल। IOS 5 के रिलीज होने के बाद से यह काफी लंबा हो चुका है। और जब से हम आईओएस 5 दुनिया में हैं, यह ध्यान देने योग्य है कि कोई भी [UINavigationBar appearance]शीर्षक पाठ विशेषताओं का उपयोग और सेट कर सकता है (उपवर्ग में शामिल चालबाजी को देखते हुए UINavigationBar, एक बेहतर समाधान)।
इवान वूइका

@stringCode। क्या आप "self.navigationController.navigationBar.titleTextAttributes = विशेषताएँ?" के बिना उपरोक्त कोड को इनिशियलाइज़ कर सकते हैं?
गजेंद्र के चौहान

3

ओरिएंटेशन समर्थन के लिए इस तरह का उपयोग करें

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];

2

यह उन चीजों में से एक है जो गायब हैं। आपका सबसे अच्छा शर्त है कि आप अपना खुद का कस्टम नेविगेशन बार बनाएं, एक टेक्स्ट बॉक्स जोड़ें, और उस तरह से रंग में हेरफेर करें।


मैं आपके विचार का अनुसरण कर रहा हूं :) शीर्षक के साथ खेलना शुरू करने के लिए मुझे किस विधि को ओवरराइड करना चाहिए? क्षमा करें, मैं वास्तव में एक n00b हूं :(
श्री राही

2

लेबल के समान समस्या (अन्य के रूप में) का सामना करने के बाद, जब हम नेबबार में एक बटन डालते हैं, तो चलती है (मेरे मामले में मेरे पास एक स्पिनर है जो मैं एक बटन के साथ प्रतिस्थापित करता हूं जब तारीख भरी हुई है), उपरोक्त समाधान काम नहीं किया मेरे लिए, इसलिए यहां वह काम किया गया है और हर समय उसी स्थान पर लेबल रखा है:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;

1

आपको [लेबल sizeToFit] पर कॉल करना चाहिए; पाठ को विचित्र सेट से रोकने के लिए जब लेबल स्वचालित रूप से शीर्षक दृश्य में पुन: व्यवस्थित किया जाता है जब अन्य बटन नौसेना पट्टी पर कब्जा कर लेते हैं।


1

Appdelegate फ़ाइल में इस पद्धति का उपयोग कर सकते हैं और हर दृश्य में उपयोग कर सकते हैं

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}

1

titleTextAttributes बार के शीर्षक पाठ के लिए प्रदर्शन विशेषताएँ।

Nprotring UIKit परिवर्धन संदर्भ में वर्णित पाठ विशेषता कुंजियों का उपयोग कर, आप पाठ विशेषता शब्दकोश में शीर्षक के लिए फ़ॉन्ट, पाठ रंग, पाठ छाया रंग, और पाठ छाया ऑफसेट निर्दिष्ट कर सकते हैं।

उपलब्धता आईओएस 5.0 और बाद में उपलब्ध है। UINavigationBar.h में घोषित किया गया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.