[設定]ボタンの色を白に変更しようとしていますが、変更できません。
私はこれらの両方を試しました:
navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()
ただし、変更はありません。次のようになります。
ボタンを白にするにはどうすればよいですか?
[設定]ボタンの色を白に変更しようとしていますが、変更できません。
私はこれらの両方を試しました:
navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()
ただし、変更はありません。次のようになります。
ボタンを白にするにはどうすればよいですか?
回答:
ストーリーボードのグローバルティントカラーを変更するには、ボードの空のスペースをクリックして、右側のツールバーで[ファイルインスペクタを表示]を選択します。ツールバーの下部に[グローバルティント]オプションが表示されます。
AppDelegate.swift > application(application:didFinishLaunchingWithOptions:)
あなたが書くことができます:self.window!.tintColor = .yourColor
このコードは矢印の色を変更します
self.navigationController.navigationBar.tintColor = UIColor.whiteColor();
これが機能しない場合は、以下のコードを使用してください。
self.navigationBar.barStyle = UIBarStyle.Black
self.navigationBar.tintColor = UIColor.whiteColor()
Swift 3ノート
UIColor.whiteColor()
および同様のものは簡略化されています UIColor.white
また、以前は暗黙的だったオプションの多くが明示的に変更されているため、次のものが必要になる場合があります。
self.navigationController?.navigationBar =
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
私のために働いた(Swift 2.2)
あなたはこれを使うべきです:
navigationController?.navigationBar.barTintColor = .purple
navigationController?.navigationBar.tintColor = .white
迅速
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.tintColor = UIColor.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
}
アプリのテーマ全体を変更
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
ますか?
すべての回答設定はUINavigationBar.appearance().tintColor
、のAppleのドキュメントと競合しUIAppearance.h
ます。
iOS7に関する注意:iOS7では、
tintColor
プロパティがに移動しUIView
、特別な継承動作がで説明されていUIView.h
ます。この継承された動作は、外観プロキシと競合する可能性があるため、外観プロキシでtintColor
は許可されなくなりました。
Xcodeでは、ヘッダーファイルを調べてプロパティに注釈が付けられていることを確認するために、Appearance Proxyで使用する各プロパティをコマンドクリックする必要があります。 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
いませんが、ドキュメントのバグのようです。このレーダーでの Apple Engineeringからの応答は、サポートされていると述べています。
self.navigationController?.navigationBar.tintColor = UIColor.redColor()
このスニペットは魔法です。redColorの代わりに、希望どおりに変更します。
このコードを内のAppDelegate
クラスで使用しますdidFinishLaunchingWithOptions
。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UINavigationBar.appearance().tintColor = .white
}
このコードを試してみましょう:
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
}
「設定」ビューコントローラーに既に戻るボタンがあり、「支払い情報」ビューコントローラーの戻るボタンの色を別の色に変更したい場合は、「設定」ビューコントローラーの内部で行うことができます。 :
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
}
}
次のコードを追加し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()]
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
}
あなたには一つの選択肢があり、あなたの戻るボタンを隠し、あなた自身でそれを作ります。次に、その色を設定します。
私はそれをしました:
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()
-(void)viewDidLoadのこの行で解決されます:
self.navigationItem.backBarButtonItem.tintColor = UIColor.whiteColor;
(lldb) p self.navigationItem.backBarButtonItem (UIBarButtonItem *) $9 = nil (lldb)
グローバル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) {
}
}
また、あなたのようなAppleのAPIで混乱する必要はありませんEKEventEditViewController、PickerViewControllerので、あなたがグローバル設定を使用する場合、UIが好きにUIBarButtonItem.appearance().tintColor = .white
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