আইওএস 8-তে নেভিগেশনবার বার, রঙ, এবং শিরোনাম পাঠ্যের রঙ


177

স্ট্যাটাস বারের পটভূমি পাঠ্যটি এখনও কালো। আমি কীভাবে রঙ সাদা করব?

// io8, swift, Xcode 6.0.1 
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]

}

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

উত্তর:


311

ইন AppDelegate.swift, application(_:didFinishLaunchingWithOptions:)আমি নিম্নলিখিতটি রেখেছি:

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

(এর NSAttributedStringKeyপরিবর্তে সুইফট 4 বা তার আগের ব্যবহারের জন্য NSAttributedString.Key)

কারণ titleTextAttributes, দস্তাবেজগুলি বলেছেন:

আপনি পাঠ্য বৈশিষ্ট্য অভিধানে শিরোনামের জন্য ফন্ট, পাঠ্যের রঙ, পাঠ্য ছায়ার রঙ এবং পাঠ্য ছায়া অফসেট উল্লেখ করতে পারেন


6
যদি আমাদের একাধিক নেভিগেশন বার থাকে?
সুমিত

6
টিন্ট কালার এক্সকোড 7.3.1 এর জন্য কাজ করে না। লেখাটি এখনও কালো।
ত্রিআইটিস্ট

1
এক্সকোড ৮.২-এ, শিরোনামপরিচয়টি স্বয়ংক্রিয়ভাবে সম্পূর্ণ হয় না তবে এটি কাজ করে।
Okysabeni

বারটিন্টকলার এখনও প্রয়োজনীয়? লাইনটি মুছে ফেলা এখনও কাজ করে
rgkobashi

122

আমি অ্যালেক্সের উত্তরটি পছন্দ করি। আপনি যদি কিছু দ্রুত ViewControllerব্যবহার করতে চান তবে নিশ্চিত হন যে আপনি ব্যবহার করছেন

viewWillAppear()
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    var nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.Black
    nav?.tintColor = UIColor.white
    nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
    //nav?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange] // swift 4.2
}

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


তবে আমি আইসো 8.1 ব্যবহার করছি
সোরিকিডো

1
ভিউউইল অ্যাপয়ার () কেন? আমি ভিডিডলয়েডে এটি করছি এবং এটি দুর্দান্ত কাজ করে।
অ্যাডাম জনস

4
কারণ যতবারই আপনি ইউআইভিউ দেখেন আপনি সেট করতে চান। আপনি যদি ইউডিয়াবার বারে ভিডিডিঅলড () সেট করে থাকেন, অন্য ট্যাবে চলে যান যেখানে এটি আবার সেট করা আছে, তবে ফিরে আসুন এটি মূলরূপটি একবারে লোড হওয়ার কারণে এটি ওভাররাইট করা হবে।
ফ্র্যাক্টাল ডক্টর

2
দ্রুত 4 এর জন্য আপডেট - NSForegroundColorAttributeNameএখন হওয়া উচিতNSAttributedStringKey.foregroundColor
অ্যালান স্কারপা

3
সুইফট 4.2 এর জন্য আপডেট: এর NSAttributedString.Key.foregroundColorপরিবর্তেNSForegroundColorAttributeName
স্টিফেন প্যাকেট

81

সর্বজনীনভাবে রঙ পরিবর্তন করতে, এই NavigationControllerকোডটির viewDidLoadফাংশনে বসতে হবে:

class NavigationController: UINavigationController, UIViewControllerTransitioningDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Status bar white font
        self.navigationBar.barStyle = UIBarStyle.Black
        self.navigationBar.tintColor = UIColor.whiteColor()
    }
}

এটি পরিবর্তন করতে প্রতি ViewControllerআপনি উল্লেখ করতে হবে NavigationControllerথেকে ViewControllerযে এবং অনুরূপ লাইন লিখতে ViewControllerএর viewWillAppearফাংশন।


এই পদ্ধতিগুলি ব্যবহার করতে আমি কীভাবে নেভিগেশন নিয়ন্ত্রণকারীকে ওভাররাইড করব?
এজি 1

আপনি নেভিগেশনকন্ট্রোলারকে ওভাররাইড করবেন না, আপনি কেবল ভিউডিডলড ফাংশনটিতে এটি পরিবর্তন করুন ify আমি উপরে আমার উত্তর আপডেট।
অ্যালেক্স

1
সুতরাং কোনও বিকাশকারীকে কেবল কর্মক্ষেত্রে নেভিগেশনকন্ট্রোলআর সুইফ্ট যুক্ত করতে হবে? যদি তাই হয় ঝরঝরে!
এজি 1

5
@ এজি 1 এটি ভুল, কেবল একটি নতুন ফাইল নেভিগেশন কন্ট্রোলআরসইউফ্ট যুক্ত করা যথেষ্ট নয়, আপনাকে স্ট্যান্ডবোর্ডে আপনার ন্যাভিগেশন কন্ট্রোলারটিকে আইডেন্টিটি ইন্সপেক্টরটিতে এই ফাইলটিতে রাখতে হবে, কারণ এটি জেনেরিক ইউআইএনএভিগেশন কন্ট্রোলার ব্যবহার করবে।
কাকুবেই

2
কাস্টম নেভিগেশন নিয়ামক তৈরি করার জন্য আপনি স্টোরিবোর্ডে ডাব্লু / আউটে কেবল এই সমস্ত কিছু করতে পারেন। বার টাইন এবং স্টাইলের বৈশিষ্ট্যগুলি বৈশিষ্ট্য পরিদর্শকের অধীনে ডানদিকে রয়েছে।
মার্ককিমার্ক

31

সুইফট 5

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

সুইফট 4

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]

2
আমি পেয়েছি: টাইপ করুন 'এনএসএট্রিবিউটেড স্ট্রিংকি' (ওরফে 'এনএসএসটিং') এর কোনও সদস্য 'ফোরগ্রাউন্ড কালার' নেই
আলফি

এক্সকোড 10 এবং সুইফট 4. ন্যাভিগেশন কন্ট্রোলার ?. নেভিগেশনবার.টাইটেল টেক্সটঅ্যাট্রিবিউটস = [এনএসএট্রিবিউটেড স্ট্রিং.কি.ফায়ারগ্রাউন্ড কালার: ইউআইক্লোর.হাইট]
ভবসং জামে

16

কাজ করার Objective-C আমি নিম্নলিখিত পংক্তিগুলি দিতে হবে viewWillAppearআমার CustomViewController হবে।

[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
[self.navigationController.navigationBar setTranslucent:NO];

জন্য Swift2.x এই কাজ করে:

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

জন্য Swift3.x এই কাজ করে:

self.navigationController?.navigationBar.barTintColor = UIColor.red

কিন্তু যখন আমি অন্য ভিউকন্ট্রোলারে ফিরে যাই তখন রঙটিও পরিবর্তন হয়ে যায়। এটি কীভাবে প্রতিরোধ করা যায় সে সম্পর্কে কোনও ধারণা। আমি চাই আমার মূল ভিউকন্ট্রোলারটি এক রঙ এবং অন্যটি অন্যরকম হোক।
ব্যবহারকারী 3163404

1
আমি মনে করি আপনার নতুন ভিউ নিয়ন্ত্রকের মধ্যেও আপনাকে রঙ সেট করতে হবে।
নিকো ক্লাউসনিৎজার

13

স্টোরিবোর্ডে এই কাজটি করতে (ইন্টারফেস বিল্ডার ইন্সপেক্টর)

এর সাহায্যে IBDesignable, আমরা ইন্টারফেস নির্মাতা পরিদর্শকের জন্য আরও বিকল্প যুক্ত করতে UINavigationControllerএবং তাদের স্টোরিবোর্ডে টুইঙ্ক করতে পারি। প্রথমে আপনার প্রকল্পে নিম্নলিখিত কোড যুক্ত করুন।

@IBDesignable extension UINavigationController {
    @IBInspectable var barTintColor: UIColor? {
        set {
            navigationBar.barTintColor = newValue
        }
        get {
            guard  let color = navigationBar.barTintColor else { return nil }
            return color
        }
    }

    @IBInspectable var tintColor: UIColor? {
        set {
            navigationBar.tintColor = newValue
        }
        get {
            guard  let color = navigationBar.tintColor else { return nil }
            return color
        }
    }

    @IBInspectable var titleColor: UIColor? {
        set {
            guard let color = newValue else { return }
            navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: color]
        }
        get {
            return navigationBar.titleTextAttributes?["NSForegroundColorAttributeName"] as? UIColor
        }
    }
}

তারপরে স্টোরিবোর্ডে কেবল ইউআইএনএভিগেশন কন্ট্রোলারের জন্য বৈশিষ্ট্যগুলি সেট করুন।

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


7

আপনি যদি পুরো অ্যাপ্লিকেশনটির জন্য রঙিন রঙ এবং বার রঙ সেট করতে চান তবে নীচের কোডটি অ্যাপডেলিগেটে যুক্ত করা যেতে পারে w

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

    var navigationBarAppearace = UINavigationBar.appearance()

    navigationBarAppearace.tintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
    navigationBarAppearace.barTintColor = UIColor(red:0.76, green:0.40, blue:0.40, alpha:1.0)
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    return true
`

নেভিগেশন বারটিন্ট কালার এবং টিন্টকালার সেট করা আছে


6

সুইফট 4 সহ আপডেট হয়েছে

override func viewDidLoad() {
    super.viewDidLoad()
        self.navigationController?.navigationBar.tintColor = UIColor.blue
        self.navigationController?.navigationBar.barStyle = UIBarStyle.black
}

6

সুইফট 5 এবং এক্সকোড 10 এ

self.navigationItem.title = "your name"
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
navigationController?.navigationBar.titleTextAttributes = textAttributes

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

4

অ্যালবার্টের উত্তরটির সুইফট 4.2 সংস্করণ-

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.white]

আপনি এই উত্তরটি কীভাবে যুক্ত করেছেন তা আমি সত্যিই পছন্দ করেছি। .barTintColor এখন কোনও বিকল্প নয়। আপনি কি। ব্যাকগ্রাউন্ড কালার মানে?
বেন

4

নেভিগেশন বারের শিরোনামের পাঠ্য রঙটি সুইফ্ট সংস্করণ ৪.২-এ সাদা করতে সেট করুন:

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

3

সুইফট 4

override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.navigationBar.barTintColor = UIColor.orange
    navigationController?.navigationBar.tintColor = UIColor.white
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}

3

সুইফট 4.1

ডিডলয়ডে একটি ফানক যুক্ত করুন

override func viewDidLoad() {
  super.viewDidLoad()

  setup()
}   

ইন setup()ফাংশন অ্যাড:

func setup() {

        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationBar.barStyle = .blackOpaque
        navigationItem.title = "YOUR_TITLE_HERE"
        navigationController?.navigationBar.barTintColor = .black
        let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
        navigationController?.navigationBar.largeTitleTextAttributes = attributes
    }

1

কাস্টম রঙ এ টু TitleTextকরতে NavigationBar, এখানে সুইফট 3 এর জন্য একটি সহজ এবং শর্ট কোড:

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

অথবা

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

1

সুইফটে 4.2

var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Black
nav?.tintColor = UIColor.white
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

1

সুইফট ৩.২ (সুইফট ৪.০ নয়) এর মাধ্যমে স্যুইফ আপ করুন

    self.navigationController?.navigationItem.largeTitleDisplayMode = .always
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

    // unconfirmed but I assume this works:
    self.navigationController?.navigationBar.barTintColor = UIColor.white
    self.navigationController?.navigationBar.barStyle = UIBarStyle.black

0

সুইফ্ট 3 এ এটি কাজ করে:

navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]

0

সুইফট 5.1

কেবল অনুলিপি করুন এবং এতে আটকান এবং ViewDidLoad()এটি আপনার আকার হিসাবে আকার পরিবর্তন করুন। অনুলিপি করুন এবং পেস্ট করার আগে স্ক্রিনের উপরে নেভিগেশন বার যুক্ত করুন।

navigationController?.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont(name: "TitilliumWeb-Bold.ttf", size: 16.0)!, NSAttributedString.Key.foregroundColor: UIColor.white]

যদি এটি কাজ না করে তবে আপনি কেবলমাত্র এটির পাঠ্যের রঙ পরিবর্তন করার চেষ্টা করতে পারেন

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.