নেভিগেশন বারের পিছনে বোতামের রঙ পরিবর্তন করুন


192

আমি সেটিংস বোতামের রঙ সাদা করতে চেষ্টা করছি, তবে এটি পরিবর্তন করতে পারছি না।

আমি এই দুটোই চেষ্টা করেছি:

navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()

তবে কোনও পরিবর্তন হয়নি, এটি এখনও এর মতো দেখাচ্ছে:

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

আমি কীভাবে সেই বোতামটি সাদা করব?

উত্তর:


283

আপনি বোর্ডের একটি ফাঁকা জায়গায় ক্লিক করে আপনার স্টোরিবোর্ডে বিশ্ববর্ণের রঙ পরিবর্তন করতে পারেন এবং ডান সরঞ্জামদণ্ডে "ফাইল ইন্সপেক্টর দেখান" নির্বাচন করুন, এবং আপনি টুলবারের নীচে "গ্লোবাল টিন্ট" বিকল্পটি দেখতে পাবেন।

স্টোরিবোর্ডে গ্লোবাল টিন্ট বিকল্প


7
ওহো .. ভাল লাগবে !. আপনি কি জানেন যে এই প্রোগ্রামটিমেটিকভাবে করবেন?
পল লেহন

10
দুর্দান্ত আবিষ্কার, তবে বিশ্ববর্ণের আভা সাদাকে (মূল প্রশ্ন অনুসারে) পরিবর্তন করে টেবিল ভিউ বিশদ প্রকাশের সূচককেও সাদা করে দেবে, যা তাদের প্রশ্নের সারণিতে অদৃশ্য করে তুলবে।
মাইক ফিশার

1
মাইকের ইস্যুগুলিতে যোগ করা: এই নিয়ন্ত্রণটি আপনার সমস্ত পাঠ্য বোতামগুলিকেও এই রঙ করে তোলে এবং সুতরাং আপনাকে তাদের হাতে হাতে একটি রঙে সেট করতে হবে (অর্থাত্ কোনও ডিফল্ট বর্ণগুলি স্পষ্টতই নয়) বা কেবল একটি আলাদা পদ্ধতি ব্যবহার করতে হবে।
সাইরেনস

4
যদিও এটি একটি দ্রুত এবং সহজ সমাধান, যদি রঙ সাদা হয় / পটভূমির সাথে মেলে তবে এটি অন্যান্য সমস্যার দিকে পরিচালিত করে। আপনার যদি পাঠ্য ক্ষেত্র থাকে তবে এটি কার্সারটিকে অদৃশ্য করে তোলে, যা এটি ব্যবহারকারীর দিকে এমন করে তোলে যেন তারা কোনও পাঠ্য ক্ষেত্রে লিখতে সক্ষম হয় না কারণ কার্সারটি দৃশ্যমান নয়।
জোসে রামিরেজ

5
@ পললহান এই প্রোগ্রামটিমেটিকভাবে করতে, AppDelegate.swift > application(application:didFinishLaunchingWithOptions:)আপনি লিখতে পারেন:self.window!.tintColor = .yourColor
মিমিকা 1000

205

এই কোডটি তীরের রং পরিবর্তন করে

self.navigationController.navigationBar.tintColor = UIColor.whiteColor();

যদি এটি কাজ না করে তবে নীচের কোডটি ব্যবহার করুন:

self.navigationBar.barStyle = UIBarStyle.Black
self.navigationBar.tintColor = UIColor.whiteColor()

সুইফট 3 নোট

UIColor.whiteColor() এবং অনুরূপ সরলীকরণ করা হয়েছে UIColor.white

এছাড়াও, পূর্বে অনেকগুলি অন্তর্নিহিত বিকল্পগুলি সুস্পষ্টভাবে পরিবর্তন করা হয়েছে, সুতরাং আপনার প্রয়োজন হতে পারে:

self.navigationController?.navigationBar =

7
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()আমার পক্ষে কাজ করেছেন (সুইফট ২.২)
মাইক ফিশার

স্ব.নাভিগেশনবার.বারস্টাইল = ইউআইবারস্টাইল.ব্ল্যাক সেলো.নভিগেশন বার.টিন্ট কালার = ইউআইসিএল.আর হোয়াইট কলার () আমার পক্ষে কাজ করেছেন (সুইফট 3)
অজয়.কিএম

আপনি কি ইউআইবারস্টাইল.ব্ল্যাক ব্যবহার করবেন তা ব্যাখ্যা করতে পারেন?
মিমিকা 1000 হাজার

দয়া করে আপডেট: self.navigationController .navigationBar.tintColor =?
mohonish

1
এটি কেবল তীর পরিবর্তন করে, ব্যাক টেক্সটটি এখনও এক্সকোড 11-তে একই রয়েছে
জেফ আয়ন


55

আপনার এটি ব্যবহার করা উচিত:

navigationController?.navigationBar.barTintColor = .purple
navigationController?.navigationBar.tintColor = .white

এটি বোতামটি সাদা করেছে, তবে পটভূমির রঙকে আরও হালকা করেছে। আপনি কীভাবে বারের ব্যাকগ্রাউন্ডটিকে আবার পুরো রঙ দেবেন তা জানেন?
ব্র্যান্ডন ইভান্স

এটা সঠিক উত্তর. এটি বারটিন্টকালার এবং শিরোনাম / বার বোতামগুলি সাদা করে বার বার বেগুনি করে তুলবে।
zirinisp

35

দ্রুতগতি

 override func viewDidLoad() {
     super.viewDidLoad()

 self.navigationController?.navigationBar.tintColor = UIColor.white
 }

1
দ্রুত 3 এ ব্যবহার করুন
দীপক তাগাদিয়া

আপনি কোন সুইফট সংস্করণটি ব্যবহার করতে পারেন তাও বলুন?
দীপক তাগদিয়া

এবং কোন কোড / ফাইল / ভিসি প্রকল্পে এই কোডটি লিখেছেন?
দীপক তাগাদিয়া

ফাংশনের শুরুতে ক্লকস বাটন () যা ভিউউইল অ্যাপয়ারে ডাকা হয়।
জয়প্রকাশ দুবে

নেক্সটভিউকন্ট্রোলআরউইফ্ট ফাইলটিতে লিখুন, ভিডডিডোডেও লিখুন ()।
দীপক তাগাদিয়া

20

আপনি এই মত ব্যবহার করতে পারেন। এটি ভিতরে রাখুন AppDelegate.swift

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

        UINavigationBar.appearance().translucent = false
        UINavigationBar.appearance().barTintColor = UIColor(rgba: "#2c8eb5")
        UINavigationBar.appearance().tintColor = UIColor.whiteColor()
        UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]

        return true
    }

20

সুইফট 4.2

সম্পূর্ণ অ্যাপ্লিকেশন থিম পরিবর্তন করুন

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

        UINavigationBar.appearance().tintColor = .white

        return true
    }

নির্দিষ্ট নিয়ামক পরিবর্তন করুন

let navController = UINavigationController.init(rootViewController: yourViewController) 
navController.navigationBar.tintColor = .red

present(navController, animated: true, completion: nil)

এটি সমস্ত অ্যাপ্লিকেশনের জন্য রঙ পরিবর্তন করে। যদি বিশেষ স্ক্রিন / বিশেষের জন্য আমার এটি পরিবর্তন করতে হবে UINavigationController?
ভাইচাস্লাভ গেরচিকভ

আপনি যদি নির্দিষ্ট নিয়ামক পরিবর্তন করতে চান তবে উপরের উত্তরটি ভাইচাস্লাভ জের্চিকভ সম্পূর্ণ অ্যাপ্লিকেশন থিমের জন্য। ভালো কিছু না: দিন navController = UINavigationController.init (rootViewController: yourViewController) navController.navigationBar.tintColor = .red
AiOsN

আপনি যদি আইওএস 13 এ থাকেন তবে আপনি ডিড ফিনিশলঞ্চিংবিথঅপশনগুলি আর ব্যবহার করবেন না, এটি সিনডেলিগেটে স্থানান্তরিত হবে।
জেবারোস 35

15

ইন Swift3 থেকে ফিরে যান বোতাম সেট red

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

এটি নেভিগেশন বারটি সেট করবে, বার বোতামের আইটেমটি নয়
কার্লোডনজ

1
হ্যাঁ, প্রশ্ন ছিল।
ভিনসেন্ট

" নেভিগেশন বারে পিছনের বোতামের রঙ পরিবর্তন করুন "
কার্লোডনজ

এটিই ছিল আমার জন্য একমাত্র পদ্ধতি। এখনই অ্যাপলের বাস্তবায়নের সাথে কিছু ভেঙে গেছে বলে মনে হচ্ছে ...
ডেভ ওয়াই

13

সুইফ্ট 4-এ, আপনি এই সমস্যাটি ব্যবহার করে যত্ন নিতে পারেন:

let navStyles = UINavigationBar.appearance()
// This will set the color of the text for the back buttons.
navStyles.tintColor = .white
// This will set the background color for navBar
navStyles.barTintColor = .black

8

সুইফট 3

সর্বাধিক উত্সাহিত উত্তরটি সুইফট 3-এর জন্য সঠিক নয়।

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

রঙ পরিবর্তন করার জন্য সঠিক কোডটি হ'ল:

self.navigationController?.navigationBar.tintColor = UIColor.white

আপনি যদি রঙ পরিবর্তন করতে চান তবে উপরের ইউআইক্লোর.ওয়াইটটি পছন্দসই রঙে পরিবর্তন করুন


এটিই ছিল আমার জন্য একমাত্র পদ্ধতি। এখনই অ্যাপলের বাস্তবায়নের সাথে কিছু ভেঙে গেছে বলে মনে হচ্ছে ...
ডেভ ওয়াই

7

UINavigationBar.appearance().tintColorঅ্যাপলের ডকুমেন্টেশনের সাথে বিরোধিতা নির্ধারণ করে সমস্ত উত্তর UIAppearance.h

আইওএস 7-এর জন্য নোট: আইওএস 7-এ tintColorসম্পত্তিটি সরানো হয়েছে UIView, এবং এখন এতে বর্ণিত বিশেষ উত্তরাধিকারসূত্রে আচরণ রয়েছে UIView.h। উত্তরাধিকার সূত্রে প্রাপ্ত এই আচরণটি উপস্থিতি প্রক্সিটির সাথে দ্বন্দ্ব দেখাতে পারে এবং তাই tintColorএখন উপস্থিতি প্রক্সি দিয়ে বঞ্চিত করা হয়েছে।

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

তাই উপস্থিতি প্রক্সিটির মাধ্যমে নেভিগেশন বারকে বেগুনি এবং শিরোনাম এবং বোতামগুলিকে সাদা করার জন্য সঠিক উপায়টি অ্যাপ্লিকেশনটিতে রয়েছে:

UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = .purple
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().tintColor = .white

নোট যে UIBarButtonItemএটি UIViewবরং একটি subclass নয় NSObject। সুতরাং তার tintColorসম্পত্তি উত্তরাধিকার হিসেবে প্রাপ্ত না হয় tintColorথেকে UIView

দুর্ভাগ্যক্রমে, UIBarButtonItem.tintColorএটিকে টীকায়িত করা হয় না UI_APPEARANCE_SELECTOR- তবে এটি আমার কাছে একটি ডকুমেন্টেশন বাগ বলে মনে হয়। অ্যাপলের প্রকৌশল প্রতিক্রিয়াতে এই রাডার এটা সমর্থিত পদ বলে।


। UINavigationBar.appearance () largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] // এছাড়াও
Guilherme


6

AppDelegateক্লাসে, এর অভ্যন্তরে এই কোডটি ব্যবহার করুন didFinishLaunchingWithOptions

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

UINavigationBar.appearance().tintColor = .white

}

4

এই কোডটি চেষ্টা করে দেখুন:

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

    let navigationBarAppearace = UINavigationBar.appearance()
    navigationBarAppearace.tintColor = UIColor.whiteColor()  // Back buttons and such
    navigationBarAppearace.barTintColor = UIColor.purpleColor()  // Bar's background color
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]  // Title's text color

    self.window?.backgroundColor = UIColor.whiteColor()
    return true
}

আপনাকে অনেক ধন্যবাদ স্যার
অর্পিত বি পারেক


4

যদি আপনার "সেটিংস" ভিউ কন্ট্রোলারে ইতিমধ্যে আপনার পিছনের বোতামটি থাকে এবং আপনি "পেমেন্ট ইনফরমেশন" ভিউ কন্ট্রোলারে অন্য কোনও কিছুর পিছনে বাটন বোতামটি পরিবর্তন করতে চান, আপনি এটি "সেটিংস" ভিউ নিয়ন্ত্রকের অভ্যন্তরে এটির জন্য প্রস্তুত করতে পারেন :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "YourPaymentInformationSegue"
    {
        //Make the back button for "Payment Information" gray:
        self.navigationItem.backBarButtonItem?.tintColor = UIColor.gray               
    }
}

3
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

এটি আমার জন্য iOS 9.0+ কাজ করে


2

নিম্নলিখিত কোড যোগ করুন didFinishLaunchingWithOptions ফাংশন AppDelegate.swift

var navigationBarAppearace = UINavigationBar.appearance()

navigationBarAppearace.tintColor = uicolorFromHex(0xffffff) // White color
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517) // Green shade

// change navigation item title color
navigationBarAppearace.titleTextAttributes =[NSForegroundColorAttributeName:UIColor.whiteColor()]

এই কোডটি আমাকে নিম্নোক্ত ত্রুটিটি দেয়: "অমীমাংসিত শনাক্তকারী 'ইউিকলোরফ্রমহেক্স' ব্যবহার করুন" কেউ কি আমাকে সে সমাধান করতে সহায়তা করতে পারে?
jonathan3087

সম্ভবত ইউআইক্লোরের জন্য একটি এক্সটেনশন। কীভাবে কোনও এক্সটেনশন তৈরি করতে হয় আপনি স্ট্যাকওভারফ্লো অনুসন্ধান করতে পারেন।
কেভিডিলিঞ্জেন

2

সুইফট ২.০ এর জন্য, পরিবর্তন করতে নেভিগেশন-বার টিন্টের রঙ , শিরোনাম পাঠ্য এবং পিছনের বোতামের টিন্টের রঙটি অ্যাপডিলেগেট.স্ফিটে নিম্নলিখিতটি ব্যবহার করে পরিবর্তিত হয়েছে

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

  // Override point for customization after application launch.


    //Navigation bar tint color change

    UINavigationBar.appearance().barTintColor = UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 0.5)

    //Back button tint color change

    UINavigationBar.appearance().barStyle = UIBarStyle.Default
    UINavigationBar.appearance().tintColor =  UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1)

    //Navigation Menu font tint color change

    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1), NSFontAttributeName: UIFont(name: "OpenSans-Bold", size: 25)!]//UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 1.0)

    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent


    return true
}

2

কেউ কেন এটি উল্লেখ করেননি তা নিশ্চিত নয় ... তবে আপনি আমার মধ্যে যা করছেন তা আমি ঠিক করছিলাম viewDidLoad ... এবং এটি কাজ করছে না। তারপরে আমি আমার কোডটি placedুকিয়ে দিয়েছি viewWillAppearএবং এটি সব কাজ করে।

উপরের সমাধানটি হল একটি একক বারবুটটন আইটেম পরিবর্তন করা । আপনি যদি রঙ পরিবর্তন করতে চান নিজের কোডে প্রতিটি নেভিগেশনবারের তবে এই উত্তরটি অনুসরণ করুন ।

মূলত ক্লাসে নিজেই ব্যবহার করে appearance()পরিবর্তন করা আপনার অ্যাপ্লিকেশনটিতে সেই দৃষ্টির সমস্ত দৃষ্টিতে বৈশ্বিক পরিবর্তন আনার মতো। আরো দেখুন জন্য এখানে


1

আপনার একটি পছন্দ আপনার পিছনের বোতামটি আড়াল করে আপনার নিজের দিয়ে তৈরি করুন। তারপরে এর রঙ সেট করুন।

আমি তাহা করেছিলাম:

self.navigationItem.setHidesBackButton(true, animated: true)
let backbtn = UIBarButtonItem(title: "Back", style:UIBarButtonItemStyle.Plain, target: self, action: "backTapped:")
self.navigationItem.leftBarButtonItem = backbtn
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.grayColor()

1
প্রশ্নটি বিশেষত বাম নেভিগেশন আইটেমটি স্টাইল করার আশেপাশে ছিল এবং এটি সরাসরি প্রশ্নের উত্তর দেওয়ার সবচেয়ে নিকটতম।
ক্রুশ

0

এটি এই লাইনের সাথে সমাধান করা হবে - (বাতিল) ভিউডিডলয়েড:

self.navigationItem.backBarButtonItem.tintColor = UIColor.whiteColor;

(lldb) p self.navigationItem.backBarButtonItem (UIBarButtonItem *) $9 = nil (lldb)
dengApro

0

আপনার এই লাইনটি যুক্ত করা উচিত

 self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black

0

আমি গ্লোবাল ui সেট করার চেয়ে কাস্টম নেভিগেশন নিয়ন্ত্রণকারীকে পছন্দ করি বা ভিউকন্ট্রোলার এ রাখি।

এখানে আমার সমাধান


class AppNavigationController : UINavigationController {

  override func viewDidLoad() {
    super.viewDidLoad()
    self.delegate = self
  }

  override func viewWillAppear(_ animated: Bool) {

  }

}
extension AppNavigationController : UINavigationControllerDelegate {

  func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    let backButtonItem = UIBarButtonItem(
      title: "   ",
      style: UIBarButtonItem.Style.plain,
      target: nil,
      action: nil)
    backButtonItem.tintColor = UIColor.gray
    viewController.navigationItem.backBarButtonItem = backButtonItem
  }

  func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {

  }

}

এছাড়াও আপনি যদি অ্যাপ্লিকেশন অ্যাপির সাথে ইকেভেন্টিডিটভিউ কনট্রোলার , পিকারভিউ কনট্রোলার এবং অন্য কোনও গ্লোবাল সেটিংস ব্যবহার করতে চান তবে আপনার সাথে গোলযোগ করার দরকার নেই uUIBarButtonItem.appearance().tintColor = .white


0
    self.navigationController?.navigationBar.tintColor = UIColor.black // to change the all text color in navigation bar or navigation 
    self.navigationController?.navigationBar.barTintColor = UIColor.white // change the navigation background color
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.black] // To change only navigation bar title text color
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.