設定ボタンの色を白に変更しようとしていますが、変更できません。
私はこれらの両方を試してみました:
navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()
しかし、変更はありません、それはまだこのように見えます:
どうやってそのボタンを白くするのですか?
このコードは矢印の色を変える
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 =
これを使うべきです:
navigationController?.navigationBar.barTintColor = .purple
navigationController?.navigationBar.tintColor = .white
こんな感じで使えます。 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
}
迅速
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.tintColor = UIColor.white
}
Swift3で、戻るボタンをred
に設定します。
self.navigationController?.navigationBar.tintColor = UIColor.red
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
アプリ全体のテーマを変更する
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)
このコードは、AppDelegate
の内側のdidFinishLaunchingWithOptions
クラスで使用します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UINavigationBar.appearance().tintColor = .white
}
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
}
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
UIBarButtonItem
はUIView
のサブクラスではなく、むしろNSObject
であることに注意してください。そのため、そのtintColor
プロパティは、tintColor
から継承されたUIView
ではありません。
残念ながら、UIBarButtonItem.tintColor
にUI_APPEARANCE_SELECTOR
のアノテーションは付けられていません - しかしそれは私にはドキュメンテーションのバグのようです。 this radar にあるApple Engineeringからの応答はサポートされていることを示しています。
[設定]ビューコントローラに[戻る]ボタンが既にあり、[支払い情報]ビューコントローラの戻るボタンの色を別の色に変更する場合は、[設定]ビューコントローラのセグエの準備の中で変更できます。 :
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
}
}
swift 2.0で使用する
self.navigationController!.navigationBar.tintColor = UIColor.whiteColor();
次のコードをAppDelegate.SwiftのdidFinishLaunchingWithOptions関数に追加します。
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()]
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
これは私のために動作します、iOS 9.0以降
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
}
これは - (void)viewDidLoadのこの行で解決されます。
self.navigationItem.backBarButtonItem.tintColor = UIColor.whiteColor;
誰もこれに言及していないのかわからない…でも私はあなたがしていたことを私のviewDidLoad
で正確にやっていた…そしてうまくいかなかった。それから私は自分のコードをviewWillAppear
に入れて、すべてうまくいきました。
上記の解決策は、singlebarbuttonItemを変更することです。あなたのコードの中でeverynavigationBarの色を変えたいのなら、この答え に従ってください 。
appearance()
を使用して基本的にクラス自体に変更することは、アプリケーション内のそのビューのすべてのインスタンスに対してグローバルに変更を加えることに似ています。詳しくは こちら をご覧ください
あなたは一つの選択があなたの背中のボタンを隠してあなたの自己とそれを作ります。それから色を設定します。
私はそれをしました:
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()
この行を追加してください
self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black
グローバル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
のようなグローバル設定を使うなら、EKEventEditViewController、PickerViewControllerのようにApple Apiをいじる必要もありません。