web-dev-qa-db-ja.com

ナビゲーションバーの戻るボタンの色を変える

設定ボタンの色を白に変更しようとしていますが、変更できません。

私はこれらの両方を試してみました:

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

しかし、変更はありません、それはまだこのように見えます:

enter image description here

どうやってそのボタンを白くするのですか?

153
Brandon Evans

ボード上の何もない場所をクリックして右のツールバーにある "ファイルインスペクタを表示"を選択するとストーリーボードの全体的な色合いを変えることができ、ツールバーの下部に "全体的な色合い"オプションが表示されます。

Global Tint option in storyboard

223
Etgar

このコードは矢印の色を変える

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

これでうまくいかない場合は、以下のコードを使用してください。

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

Swift 3 Notes

UIColor.whiteColor()と同様のものはUIColor.whiteに簡略化されました

また、以前に暗黙のオプションの多くが明示に変更されているので、あなたは必要があるかもしれません:

self.navigationController?.navigationBar =
165
Chamath Jeevan

ストーリーボードで設定するのはとても簡単です。

enter image description here

enter image description here

85
AlessandroDP

これを使うべきです:

navigationController?.navigationBar.barTintColor = .purple
navigationController?.navigationBar.tintColor = .white
44
Tiep Vu Van

こんな感じで使えます。 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
    }
18
Mohammad Nurdin

迅速

 override func viewDidLoad() {
     super.viewDidLoad()

 self.navigationController?.navigationBar.tintColor = UIColor.white
 }
17
Deepak Tagadiya

Swift3で、戻るボタンをredに設定します。

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

Swift 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
13

スイフト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)
11
AiOsN

スイフト3

最も支持されている答えはSwift 3では正しくありません。

enter image description here

色を変更するための正しいコードは次のとおりです。

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

色を変えたい場合は、上のUIColor.whiteを希望の色に変更してください

6
Elon R.

このコードは、AppDelegateの内側のdidFinishLaunchingWithOptionsクラスで使用します。

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

UINavigationBar.appearance().tintColor = .white

}
6
M.Nadeeshan
self.navigationController?.navigationBar.tintColor = UIColor.redColor()

このスニペットは魔法をやる。 redColorの代わりに、あなたの望み通りにそれを変更してください。

このコードを試してみましょう:

 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
Mannam Brahmam

UINavigationBar.appearance().tintColorを設定するすべての答えはUIAppearance.hのアップルのドキュメンテーションと衝突します。

IOS7に関する注意:iOS7ではtintColorプロパティはUIViewに移動し、現在はUIView.hで説明されている特別な継承動作があります。この継承された動作は外観プロキシと競合する可能性があるため、tintColorは外観プロキシでは許可されなくなりました。

Xcodeでは、外観プロキシで使用する各プロパティをコマンドクリックしてヘッダーファイルを調べ、そのプロパティにUI_APPEARANCE_SELECTORという注釈が付けられていることを確認する必要があります。

そのため、外観プロキシを介してアプリ全体でナビゲーションバーを紫色に、タイトルとボタンを白く着色する正しい方法は次のとおりです。

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

UIBarButtonItemUIViewのサブクラスではなく、むしろNSObjectであることに注意してください。そのため、そのtintColorプロパティは、tintColorから継承されたUIViewではありません。

残念ながら、UIBarButtonItem.tintColorUI_APPEARANCE_SELECTORのアノテーションは付けられていません - しかしそれは私にはドキュメンテーションのバグのようです。 this radar にあるApple Engineeringからの応答はサポートされていることを示しています。

4
Jamie McDaniel

[設定]ビューコントローラに[戻る]ボタンが既にあり、[支払い情報]ビューコントローラの戻るボタンの色を別の色に変更する場合は、[設定]ビューコントローラのセグエの準備の中で変更できます。 :

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               
    }
}
4
Despotovic

swift 2.0で使用する

self.navigationController!.navigationBar.tintColor = UIColor.whiteColor();
4
Riccardo Caroli

次のコードをAppDelegate.SwiftdidFinishLaunchingWithOptions関数に追加します。

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()]
3
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

これは私のために動作します、iOS 9.0以降

2
yuchen

Swift 2.0の場合、ナビゲーションバーの色合いの色を変更するには、タイトルテキストおよび戻るボタンの色合いは、AppDelegate.Swiftで以下を使用することによって変更されました。

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
yazh

これは - (void)viewDidLoadのこの行で解決されます。

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

誰もこれに言及していないのかわからない…でも私はあなたがしていたことを私のviewDidLoadで正確にやっていた…そしてうまくいかなかった。それから私は自分のコードをviewWillAppearに入れて、すべてうまくいきました。

上記の解決策は、singlebarbuttonItemを変更することです。あなたのコードの中でeverynavigationBarの色を変えたいのなら、この答え に従ってください

appearance()を使用して基本的にクラス自体に変更することは、アプリケーション内のそのビューのすべてのインスタンスに対してグローバルに変更を加えることに似ています。詳しくは こちら をご覧ください

0
Honey

あなたは一つの選択があなたの背中のボタンを隠してあなたの自己とそれを作ります。それから色を設定します。

私はそれをしました:

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()
0

この行を追加してください

 self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black
0
Monir Khlaf

グローバルUIを設定したり、ViewControllerに入れたりするよりも、カスタムNavigationControllerを好みます。

これが私の解決策です


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) {

  }

}

UIBarButtonItem.appearance().tintColor = .whiteのようなグローバル設定を使うなら、EKEventEditViewControllerPickerViewControllerのようにApple Apiをいじる必要もありません。

0
tylerlantern