我有一个使用Storyboard的项目,每当我用segue推动一个视图控制器时,动态创建的条形按钮项始终是蓝色的。
这让我疯了。因为这个对象是动态创建的,所以我无法在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有一些变化?无论我如何或在何处尝试将“Categorías”设置为白色,它始终是默认的蓝色。
答案 0 :(得分:83)
在iOS 7中,要设置应用中所有barButtonItem的颜色,请在AppDelegate中的应用程序窗口中设置tintColor
属性。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.tintColor = [UIColor whiteColor];
return YES;
}
Apple's iOS 7 UI Transition Guide中的更多详细信息(特别是在“使用色调颜色”部分下)。
<强> *** *** OR 强>
根据一些评论,您还可以使用UINavigationBar外观代理实现此目的。这将影响仅UIBarButtonItems的tintColor,而不是在窗口上设置tintColor并影响该窗口的所有子视图。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if([UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) {
[UINavigationBar appearance].tintColor = [UIColor whiteColor];
}
return YES;
}
答案 1 :(得分:22)
我认为您正在寻找UINavigationBar的属性。尝试设置self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
答案 2 :(得分:10)
在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
}
答案 3 :(得分:2)
在iOS 8中,如果您出于某种目的更改了UIView色调颜色,例如为品牌UIAlertView,UIToolBar中UIBarButtonItem的色彩颜色也改变了这种方式。要解决此问题,只需编写此代码
即可[UIView appearance].tintColor = SOME_COLOR;
[UIView appearanceWhenContainedIn:[UIToolbar class], nil].tintColor = BLACK_COLOR;
对于UINavigationBar中的UIBarButtonItem色调,请使用标准方法
[UINavigationBar appearance].tintColor = BLACK_COLOR;
答案 4 :(得分:1)
要更改导航栏中特定项目(例如按钮)的颜色,请执行以下操作: 在Objective-C
myButton.tintColor = [UIColor redColor];
答案 5 :(得分:0)
UITabBar.appearance().tintColor = UIColor.yellowColor()
答案 6 :(得分:0)
这对我有用
AddBarButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal)
答案 7 :(得分:0)
快速5
barButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal)