75

有没有办法将 iOS 7 上标签栏的色调从默认的带有蓝色图标的白色更改为带有不同颜色按钮的另一种颜色?

4

9 回答 9

207

试试下面的:

[[UITabBar appearance] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setBarTintColor:[UIColor yellowColor]];

要为非活动按钮着色,请将以下代码放入您的 VC 中viewDidLoad

UITabBarItem *tabBarItem = [yourTabBarController.tabBar.items objectAtIndex:0];

UIImage *unselectedImage = [UIImage imageNamed:@"icon-unselected"];
UIImage *selectedImage = [UIImage imageNamed:@"icon-selected"];

[tabBarItem setImage: [unselectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
[tabBarItem setSelectedImage: selectedImage];

您需要为所有 tabBarItems 执行此操作,是的,我知道这很丑陋,希望有清洁的方法来执行此操作。

迅速:

UITabBar.appearance().tintColor = UIColor.red

tabBarItem.image = UIImage(named: "unselected")?.withRenderingMode(.alwaysOriginal)
tabBarItem.selectedImage = UIImage(named: "selected")?.withRenderingMode(.alwaysOriginal)
于 2013-09-14T08:04:05.500 回答
22

有一种更简单的方法可以做到这一点。

只需打开文件检查器并选择“全局色调”。

您还可以在 Interface Builder 中设置应用程序的色调颜色。文件检查器的 Interface Builder Document 部分中的 Global Tint 菜单可让您打开 Colors 窗口或选择特定颜色。

另见:

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

于 2013-09-30T16:06:49.127 回答
18

iOS 7.1.1

如果有人需要使用全局设置色调颜色:

[[UIView appearance] setTintColor:[UIColor whiteColor]];

didFinishLaunchingWithOptionsAppDelegate

viewDidLoad以下代码也将在任何方法中仅更改标签栏色调颜色:

[self.tabBarController.tabBar setTintColor:[UIColor redColor]];
于 2014-04-23T15:48:53.563 回答
9

在应用程序委托 didFinishLaunchingWithOptions 中:

window.tintColor = [UIColor purpleColor];

为应用程序全局设置色调颜色。

于 2014-03-20T17:12:25.347 回答
8

在标签栏的视图控制器类中写下:

// Generate a black tab bar
self.tabBarController.tabBar.barTintColor = [UIColor blackColor];

// Set the selected icons and text tint color
self.tabBarController.tabBar.tintColor = [UIColor orangeColor];
于 2014-06-10T11:56:50.940 回答
2

最终对我有用的是:

[self.tabBar setTintColor:[UIColor redColor]];
[self.tabBar setBarTintColor:[UIColor yellowColor]];
于 2014-12-07T09:44:16.200 回答
1

Interface Builder中标签栏控制器的“属性检查器”中,确保底部栏设置为不透明标签栏:

选择不透明

现在转到您的AppDelegate.m文件。寻找:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

然后在花括号之间添加此代码以更改选项卡栏按钮和选项卡栏背景的颜色:

///----------------SET TAB BAR COLOR------------------------//

//--------------FOR TAB BAR BUTTON COLOR---------------//
[[UITabBar appearance] setTintColor:[UIColor greenColor]];

//-------------FOR TAB BAR BACKGROUND COLOR------------//
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
于 2015-12-31T11:27:36.673 回答
0

在尝试了所有建议的解决方案后,我找不到任何非常有用的解决方案。

我终于尝试了以下方法:

[self.tabBar setTintColor:[UIColor orangeColor]];

效果很好。

我只为每个 TabBarItem 提供了一张图片。甚至不需要 selectedImage。

我什至在 Child-ViewControllers 中使用它来设置不同的 TintColors:

UIColor *theColorYouWish = ...;
if ([[self.parentViewController class] isSubclassOfClass:[UITabBarController class]]){
    UITabBarController *tbc = (UITabBarController *) self.parentViewController;
    [tbc.tabBar setTintColor:theColorYouWish];
}
于 2014-09-26T13:18:08.687 回答
-3

您可以将色调颜色和字体设置为 setTitleTextattribute:

UIFont *font= (kUIScreenHeight>KipadHeight)?[UIFont boldSystemFontOfSize:32.0f]:[UIFont boldSystemFontOfSize:16.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName,
                            tintColorLight, NSForegroundColorAttributeName, nil];
[[UINavigationBar appearance] setTitleTextAttributes:attributes];
于 2014-11-03T12:31:03.730 回答