改变UIBarButtonItem的色调
我有一个使用故事板的项目,每当我用一个segue推动视图控制器时,dynamic创build的栏button项总是蓝色的。
这让我疯狂。 因为这个对象是dynamic创build的,所以我不能在IB中设置它的颜色(就像我之前的barbutton项目所做的那样)。
我尝试过的解决scheme是:
- 将其设置在接收者的
viewDidLoad
-
将其设置在接收者的
viewDidAppear
self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];
-
当我看到这不太有效,我试着设置leftBarButtonItem:
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
-
我已经尝试了下面的代码(我从其他答案中得到)在我的应用程序的委托,当新视图被调用,并在推新视图之前:
[[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];
我find的所有谷歌答案build议使用上面的代码,但它根本不工作。 也许iOS 7的外观API有一些变化? 无论我怎样或在哪里设置“Categorías”为白色,它总是默认的蓝色。
在iOS 7中,要设置应用程序中所有barButtonItem的颜色,请在AppDelegate的应用程序窗口中设置tintColor
属性。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.tintColor = [UIColor whiteColor]; return YES; }
Apple iOS 7 UI过渡指南中的更详细的信息(具体在“使用色调”部分下)。
***要么***
基于一些评论,你也可以通过UINavigationBar外观代理来实现这一点。 这将仅影响UIBarButtonItems的tintColor,而不是在窗口上设置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
在Swift 3.0中
let navigationBarAppearnce = UINavigationBar.appearance()
导航栏的tintColor影响后方指示器图像,button标题和button图像的颜色。
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 }
UITabBar.appearance().tintColor = UIColor.yellowColor()
在iOS 8中,如果您为了某种目的而更改了UIView tint color,例如用于品牌化UIAlertView,UIToolBar中的UIBarButtonItem的tint color也改变了这种方式。 要解决这个问题,只需编写这个代码
[UIView appearance].tintColor = SOME_COLOR; [UIView appearanceWhenContainedIn:[UIToolbar class], nil].tintColor = BLACK_COLOR;
对于UINavigationBar中的UIBarButtonItem色彩使用标准方法
[UINavigationBar appearance].tintColor = BLACK_COLOR;
要更改导航栏中特定项目(例如button)的颜色:在Objective-C中
myButton.tintColor = [UIColor redColor];