Storyboardsを使用するプロジェクトがあり、セグエでView Controllerをプッシュするたびに、動的に作成されたバーボタンアイテムは常に青になります。
それは私を夢中にさせています。このオブジェクトは動的に作成されるため、IBでその色を設定できません(以前のバーボタン項目で行ったように)。
私が試した解決策の中には:
viewDidLoad
に設定します受信者のviewDidAppear
に設定します
self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];
それがうまくいかないのを見たとき、代わりにleftBarButtonItemを設定しようとしました:
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
新しいビューが呼び出されたとき、新しいビューをプッシュする前に、アプリのデリゲートで次のコード(他のSO回答)から取得しました)を試しました。
[[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];
私が見つけたすべてのグーグルの答えは、上記のコードを使用することをお勧めしますが、それは私のためにまったく機能していません。 iOS 7の外観APIにいくつかの変更があるのでしょうか? 「カテゴリ」をどのようにまたはどこで白に設定しようとしても、常にデフォルトの青になります。
IOS 7では、アプリ内のすべてのbarButtonItemsの色を設定するには、AppDelegateのアプリケーションのウィンドウでtintColor
プロパティを設定します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.tintColor = [UIColor whiteColor];
return YES;
}
AppleのiOS 7 UI移行ガイド の詳細情報(特に「色合いの使用」セクションの下)。
*** OR ***
コメントのいくつかに基づいて、UINavigationBar外観プロキシを使用してこれを実現することもできます。これは、ウィンドウにtintColorを設定し、そのウィンドウのすべてのサブビューに影響を与えるのではなく、UIBarButtonItemのみのtintColorに影響します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if([UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) {
[UINavigationBar appearance].tintColor = [UIColor whiteColor];
}
return YES;
}
UINavigationBarのプロパティを探していると思います。 self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
を設定してみてください
「ナビゲーションバーの外観」セクションを参照してください: https://developer.Apple.com/library/ios/documentation/userexperience/conceptual/UIKitUICatalog/UINavigationBar.html#//Apple_ref/doc/ uid/TP40012857-UINavigationBar-SW1
In Swift 3.0
let navigationBarAppearnce = UINavigationBar.appearance()
ナビゲーションバーの tintColor は、背面インジケータの画像、ボタンのタイトル、およびボタンの画像の色に影響します。
navigationBarAppearnce.barTintColor = UIColor(red: 0.180, green: 0.459, blue: 0.733, alpha: 1.00)
barTintColorプロパティは、バー自体の色に影響します
navigationBarAppearnce.tintColor = UIColor.white
最終コード
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let navigationBarAppearnce = UINavigationBar.appearance()
navigationBarAppearnce.barTintColor = UIColor(red: 0.180, green: 0.459, blue: 0.733, alpha: 1.00)
navigationBarAppearnce.tintColor = UIColor.white
navigationBarAppearnce.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
//Change status bar color
UIApplication.shared.statusBarStyle = .lightContent
return true
}
IOS 8では、UIAlertViewのブランド化など、何らかの目的でUIViewの色合いを変更した場合、UIToolBarのUIBarButtonItemの色合いもそのように変更されました。これを修正するには、このコードを書くだけです
[UIView appearance].tintColor = SOME_COLOR;
[UIView appearanceWhenContainedIn:[UIToolbar class], nil].tintColor = BLACK_COLOR;
UINavigationBarのUIBarButtonItemの色合いには、標準の方法を使用します
[UINavigationBar appearance].tintColor = BLACK_COLOR;
ナビゲーションバーの特定のアイテム(ボタンなど)の色を変更するには:Objective-Cの場合
myButton.tintColor = [UIColor redColor];
これは私のために働いた
AddBarButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal)
UITabBar.appearance().tintColor = UIColor.yellowColor()