আইওএস নেভিগেশন বারের শিরোনামের ফন্ট এবং রঙ পরিবর্তন করে


101

সুতরাং আমার কাছে এই কোডটি রয়েছে যে এনএভি বারের শিরোনাম ফন্টটি পরিবর্তন করা উচিত, তবে এটি নেই

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont
                                                                       fontWithName:_dataManager.optionsSettings.fontString size:14], NSFontAttributeName,
                            [UIColor whiteColor], NSForegroundColorAttributeName, nil];

[[UINavigationBar appearance] setTitleTextAttributes:attributes];

এই কোডটি দিয়ে ব্যাক বোতাম ফন্ট পরিবর্তন করা ঠিক কাজ করে।

   //set backbutton font
NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                  [UIFont fontWithName:_dataManager.optionsSettings.fontString size:15], NSFontAttributeName,
                                  nil];
[[UIBarButtonItem appearance] setTitleTextAttributes:normalAttributes
                                            forState:UIControlStateNormal];

উত্তর:


251

শিরোনাম হরফ (এবং রঙ) পরিবর্তন করার সঠিক উপায় হ'ল:

[self.navigationController.navigationBar setTitleTextAttributes:
 @{NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:[UIFont fontWithName:@"mplus-1c-regular" size:21]}];

সম্পাদনা করুন: সুইফট 4.2

self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedString.Key.foregroundColor: UIColor.red,
 NSAttributedString.Key.font: UIFont(name: "mplus-1c-regular", size: 21)!]

সম্পাদনা: সুইফট 4

self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedStringKey.foregroundColor: UIColor.red,
 NSAttributedStringKey.font: UIFont(name: "mplus-1c-regular", size: 21)!]

সুইফট 3:

self.navigationController?.navigationBar.titleTextAttributes = 
[NSForegroundColorAttributeName: UIColor.redColor(),
 NSFontAttributeName: UIFont(name: "mplus-1c-regular", size: 21)!]

2
আকারটি আমার চেষ্টা করা মূল্য নির্বিশেষে একই থাকে
রাফেল রায়ার-রিভার্ড

1
হ্যাঁ, বুঝতে পেরেছি আমার ফন্টটি সঠিকভাবে লোড হয়নি। এখনও কেন বুঝতে পারছি না, আমি ওপেনসানস-লাইট এবং ওপেনসান্স-নিয়মিত একইভাবে আমদানি করেছি, কেবল ওপেনসানস-লাইট ব্যবহারযোগ্য বলে মনে হচ্ছে ...
রাফেল রায়ার-রিভার্ড

1
ওবজে-সি কোডটি একটি বন্ধ হওয়া বন্ধনী অনুপস্থিত। এটি হওয়া উচিত: [স্ব-নেভিগেশন কন্ট্রোলআর.ইভিগেশনবার সেটটাইটেল পাঠ্যঅ্যাট্রিবিউটস: @; এনএসফোরগ্রাউন্ড কালারঅ্যাট্রিবিউটনেম: [ইউআইসিওলোর রেড কালার], এনএসফন্টঅ্যাট্রিবিউটনাম: [ইউআইফন্ট ফন্ট উইথনাম: @ "এমপ্লাস -1 সি-রেগুলার" সাইজ: 21]}]
ডিলান হ্যান্ড

এতে যান backBarButton পরিবর্তন করার জন্য লিংক হরফ: stackoverflow.com/a/16538596/5967144
soorej বাবু

লার্জ টাইটেল ন্যাভিবার ব্যবহার করার পরে কী হবে? আমি navigationBar.LargeTitleTextAttributesএই সম্মানের কোনও বা কিছুই পাই না । আপনি কীভাবে বিশ্বব্যাপী লার্জটাইটিল ফন্টটি সেট করবেন জানেন?
আইকেকে

54

অন্যান্য উত্তরগুলির সাথে কোনও ভুল নেই। আমি হরফ সেট করার জন্য স্টোরিবোর্ডের সংস্করণটি ভাগ করছি।

1. আপনার নেভিগেশন কন্ট্রোলারের মধ্যে আপনার নেভিগেশন বারটি নির্বাচন করুন

navBar

2. বৈশিষ্ট্য পরিদর্শকের শিরোনাম হরফ পরিবর্তন করুন

শিরোনাম-ফন্ট

(এক্সকোড নতুন ফন্ট তুলে নেওয়ার আগে আপনাকে সম্ভবত নেভিগেশন বারের জন্য বার টিন্ট টগল করতে হবে)

নোট (গুহাত)

যাচাই করেছে যে এটি Xcode 7.1.1+ এ কাজ করে। ( নীচের নমুনাগুলি দেখুন )

  1. ফন্টটি কার্যকর হওয়ার আগে আপনাকে নেভ বার টিন্টটি টগল করতে হবে (এক্সকোডে বাগের মতো মনে হচ্ছে; আপনি এটি ডিফল্টে ফিরে যেতে পারেন এবং ফন্টটি আটকে থাকবে)
  2. যদি আপনি একটি সিস্টেম ফন্ট বেছে নেন size তবে মাপ 0.0 না তা নিশ্চিত হয়ে নিন (অন্যথায় নতুন ফন্টটি উপেক্ষা করা হবে)

আয়তন

  1. দেখে মনে হচ্ছে এটি কোনও সমস্যা ছাড়াই কাজ করে যখন কেবলমাত্র একটি NavBar ভিউ শ্রেণিবদ্ধে থাকে। এটি প্রদর্শিত হচ্ছে যে একই স্ট্যাকের গৌণ NavBars উপেক্ষা করা হবে। (মনে রাখবেন যে আপনি যদি মাস্টার নেভিগেশন কন্ট্রোলারের নাভিবার দেখান তবে অন্যান্য সমস্ত কাস্টম নাভিবার সেটিংস উপেক্ষা করা হবে)।

গটচস (ডিউক্স)

এর মধ্যে কয়েকটি পুনরাবৃত্তি হয়েছে যার অর্থ তারা খুব সম্ভবত লক্ষনীয়।

  1. কখনও কখনও স্টোরিবোর্ড এক্সএমএল দূষিত হয়। এর জন্য আপনার উত্স কোড মোড হিসাবে স্টোরিবোর্ডের কাঠামোটি পর্যালোচনা করা প্রয়োজন (স্টোরিবোর্ডের ফাইলটি ডান ক্লিক করুন> হিসাবে খুলুন ...)
  2. কিছু ক্ষেত্রে ব্যবহারকারীর সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যের সাথে যুক্ত নেভিগেশন আইটেম ট্যাগটি ভিউ কন্ট্রোলার ট্যাগের পরিবর্তে ভিউ ট্যাগের একটি এক্সএমএল শিশু হিসাবে সেট করা হয়েছিল। যদি তা হয় তবে সঠিক অপারেশনের জন্য ট্যাগগুলির মধ্যে থেকে এটি সরিয়ে দিন।
  3. কাস্টম ফন্টটি ব্যবহৃত হয়েছে তা নিশ্চিত করতে নাভবার টিিন্ট টগল করুন।
  4. গতিশীল ফন্ট শৈলী ব্যবহার না করা পর্যন্ত ফন্টের আকারের প্যারামিটার যাচাই করুন
  5. দেখুন শ্রেণিবিন্যাস সেটিংস ওভাররাইড করবে। এটি প্রদর্শিত হয় যে স্ট্যাকের জন্য একটি ফন্ট সম্ভব।

ফলাফল

NavBar-তির্যক

নমুনা

কাস্টম ফন্ট হ্যান্ডলিং

দ্রষ্টব্য Chris কোড উইথ ক্রিস ওয়েবসাইট থেকে একটি দুর্দান্ত চেকলিস্ট পাওয়া যাবে এবং আপনি নমুনা ডাউনলোড প্রকল্পটি দেখতে পারেন।

যদি আপনার নিজের ফন্ট থাকে এবং আপনার স্টোরিবোর্ডে এটি ব্যবহার করতে চান, তবে নীচের এসও প্রশ্নের উপর উত্তরগুলির একটি শালীন সেট রয়েছে । একটি উত্তর এই পদক্ষেপগুলি চিহ্নিত করে।

  1. আপনার কাস্টম ফন্ট ফাইল (.ttf, .ttc) পান
  2. আপনার এক্সকোড প্রকল্পে ফন্ট ফাইলগুলি আমদানি করুন
  3. অ্যাপ্লিকেশন-ইনফিট.লিস্টে, অ্যাপ্লিকেশন দ্বারা সরবরাহিত ফন্ট নামে একটি কী যুক্ত করুন I এটি একটি অ্যারে টাইপ করুন, আপনার ফন্টের সমস্ত ফাইলের নাম অ্যারে যুক্ত করুন, দ্রষ্টব্য: ফাইল এক্সটেনশন সহ।
  4. স্টোরিবোর্ডে, নেভিগেশনবারে অ্যাট্রিবিউট ইন্সপেক্টরটিতে যান, ফন্ট নির্বাচন অঞ্চলটির ডান আইকন বোতামটি ক্লিক করুন the

কাস্টম ফন্ট workaround

সুতরাং Xcode স্বাভাবিকভাবে দেখে মনে হচ্ছে এটি ইউআইএনএভিগেশন আইটেমটিতে কাস্টম ফন্টগুলি পরিচালনা করতে পারে তবে সেই বৈশিষ্ট্যটি ঠিকমতো আপডেট হচ্ছে না (নির্বাচিত ফন্টটি উপেক্ষা করা হবে)।

UINavigationItem

এটি কার্যকরভাবে দেখতে:

একটি উপায় হ'ল স্টোরিবোর্ডটি ব্যবহার করে কোডের একটি লাইন যুক্ত করা: প্রথমে ভিউ কন্ট্রোলারে একটি ইউআইভিউ (ইউআইবাটন, ইউআইএলবেল বা কিছু অন্যান্য ইউআইভিউ সাবক্লাস) যুক্ত করুন (নেভিগেশন আইটেম নয় ... এক্সকোড বর্তমানে কোনওটি করার অনুমতি দিচ্ছে না যে)। আপনি নিয়ন্ত্রণ যুক্ত করার পরে আপনি স্টোরিবোর্ডে ফন্টটি সংশোধন করতে পারেন এবং আপনার ভিউ কন্ট্রোলারের একটি আউটলেট হিসাবে একটি রেফারেন্স যুক্ত করতে পারেন। কেবল এই দৃশ্যটি ইউআইএনএভিগেশন আইটেম.টাইটেলভিউতে অর্পণ করুন। আপনি প্রয়োজনে কোডে পাঠ্যের নামও সেট করতে পারেন। রিপোর্ট করা বাগ (23600285)।

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

21

এটা চেষ্টা কর:

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor whiteColor],NSForegroundColorAttributeName,
                                [UIColor whiteColor],NSBackgroundColorAttributeName,nil];
self.navigationController.navigationBar.titleTextAttributes = textAttributes;

14

পরিবর্তন নেভিগেশন বার শিরোনামের জন্য আমার সুইফট কোড:

let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
self.navigationController.navigationBar.titleTextAttributes = attributes

এবং আপনি যদি ব্যাকগ্রাউন্ড ফন্টটি পরিবর্তন করতে চান তবে আমার অ্যাপডেলিজেটে এটি আমার রয়েছে:

let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
UIBarButtonItem.appearance().setTitleTextAttributes(attributes, forState: UIControlState.Normal)

8

আপনার অ্যাপ ডেলিগেটে এই একক লাইন কোডটি যুক্ত করুন - লাউচ শেষ করেছেন। এটি অ্যাপ্লিকেশন জুড়ে ফন্ট, নেভিগেশন বারের রঙ পরিবর্তন করবে।

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont(name: "YOUR FONT NAME", size: 25.0)!]

5

আপনার প্রশ্নের উত্তর এখানে:

আপনার কোডটি নীচের পদ্ধতিতে সরান কারণ নেভিগেশন বারের শিরোনাম ভিউ লোড হওয়ার পরে আপডেট হয়েছে। আমি ভিডলিডোডে উপরের কোডটি যুক্ত করার চেষ্টা করেছি, এটি কাজ করে না, এটি ভিডিডায়ার পদ্ধতিতে দুর্দান্ত কাজ করে।

  -(void)viewDidAppear:(BOOL)animated{}

3

যে কারও একটি সুইফট 3 সংস্করণ প্রয়োজন। redColor()ন্যায়বিচারে পরিবর্তিত হয়েছে red

self.navigationController?.navigationBar.titleTextAttributes =
        [NSForegroundColorAttributeName: UIColor.red,
         NSFontAttributeName: UIFont(name: "{your-font-name}", size: 21)!]

2

এটি আক্ষরিক ব্যবহার করে কিছুটা বেশি পঠনযোগ্য:

self.navigationController.navigationBar.titleTextAttributes = @{
                                                              NSFontAttributeName:[UIFont fontWithName:@"mplus-1c-regular" size:21],
                                                              NSForegroundColorAttributeName: [UIColor whiteColor]
                                                              };

2

আমার একটি সমস্যা ছিল কারণ যখন আমি আমার নেভিগেশন আইটেমের শিরোনামটিকে প্রোগ্রামগতভাবে পরিবর্তন করার চেষ্টা করি তখন আমি আমার পারিবারিক ফন্টটি খুঁজে পেতে সক্ষম হইনি (অনেকগুলি চেষ্টা করেও এটি সঠিকভাবে চালানো অসম্ভব) তাই আমি স্টোরিবোর্ডে একটি খুব কার্যকর এবং সহজ খুঁজে পেয়েছি।

  1. প্রথমত আপনি মাঝখানে নেভিগেশন আইটেমের এক দর্শন অধীনে যুক্ত করুন এবং নাভবারের একই রঙের জন্য রঙ পরিষ্কার করতে ব্যাকগ্রাউন্ড কালার সেট করতে ভুলবেন না:

এখানে চিত্র বর্ণনা লিখুন

  1. তারপরে আপনি একটি লেবেল যুক্ত করুন যা আপনি এই ভিউতে (পাঠ্যের রঙ, ফন্ট, আকারের সেট ...) সম্পাদনা করতে পারবেন
  2. আপনি লেবেলের সীমাবদ্ধতাগুলি যুক্ত করুন (শীর্ষ = 0, নীচে = 0, পিছনে = 0 এবং শীর্ষস্থানীয় = 0) দেখতে এবং লেবেলের পাঠ্যকে কেন্দ্র করতে

শেষ পর্যন্ত আপনার ডকুমেন্টের রূপরেখায় এর মতো কিছু থাকা উচিত:

এখানে চিত্র বর্ণনা লিখুন

এবং আপনার ভিউকন্ট্রোলারের মধ্যে এমন কিছু:

এখানে চিত্র বর্ণনা লিখুন

আশা করি এটি সাহায্য করতে পারে।


2

সুইফট: -

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Love Nature", size: 40)!]

1

এটি সুইফট 4 এর বিকল্পের জন্য (ইতিমধ্যে @ জোশ দ্বারা উত্তর):

let titleTextAttributed: [NSAttributedStringKey: Any] = [.foregroundColor: UIColor.red, .font: UIFont(name: "AvenirNext-Regular", size: 20) as Any]
navigationController?.navigationBar.titleTextAttributes = titleTextAttributed

1

আইওএস 11

এখানে চিত্র বর্ণনা লিখুন

উদ্দেশ্য গ

if (@available(iOS 11.0, *)) {
    self.navigationController.navigationItem.largeTitleDisplayMode =  UINavigationItemLargeTitleDisplayModeAlways;
    self.navigationController.navigationBar.prefersLargeTitles = true;

// Change Color
    self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};

} else {
    // Fallback on earlier versions
}

1

ফন্ট এবং রঙ সেট করার জন্য অবজেক্টিভ-সি এর জন্য

- (void)_setup {
    NSDictionary *barButtonTitleAttributes = @{
                                               NSForegroundColorAttributeName : [UIColor whiteColor],
                                               NSFontAttributeName :[UIFont fontWithName:@"Lato-Regular" size:15.0]
                                               };
    [self.navigationBar setTitleTextAttributes:barButtonTitleAttributes];

}

0

সুইফট 4 for এর জন্য এখানে একটি উত্তর দেওয়া হয়েছে:

    let textAttributes:[String:Any]? = [NSAttributedStringKey.foregroundColor.rawValue:UIColor.blue, NSAttributedStringKey.font.rawValue:UIFont(name:"Avenir Next", size:20)!]
    navigationController?.navigationBar.titleTextAttributes = textAttributes

0

সংকলন ত্রুটিগুলি এড়ানোর জন্য কীগুলির কাঁচা মানগুলি যুক্ত করতে ভুলবেন না।

    let textAttributes:[NSAttributedStringKey: Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue):UIColor.blue, NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue):UIFont(name:"OpenSans", size: 17)!]
    navigationController?.navigationBar.titleTextAttributes = textAttributes

0

সুইফট 4.2

self.navigationController?.navigationBar.titleTextAttributes =
        [NSAttributedString.Key.foregroundColor: UIColor.white,
         NSAttributedString.Key.font: UIFont(name: "LemonMilklight", size: 21)!]

0

এই এক্সটেনশনটি যুক্ত করুন

extension UINavigationBar {
    func changeFont() {
        self.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Poppins-Medium", size: 17)!]
    }
}

ডিডলয়েড () এ নিম্নলিখিত লাইনটি যুক্ত করুন

self.navigationController?.navigationBar.changeFont()

-1

সুইফটে in.০ এ কাজ করা শিরোনামের রঙ পরিবর্তন করার জন্য আপনাকে এই জাতীয় শিরোনামপরিচয়টি যুক্ত করতে হবে

        let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
        self.navigationController.navigationBar.titleTextAttributes = textAttributes

For changing navigationBar background color you can use this
        self.navigationController.navigationBar.barTintColor = UIColor.white

For changing navigationBar back title and back arrow color you can use this
       self.navigationController.navigationBar.tintColor = UIColor.white
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.