IOS 7でUITabBarとUITabBarItemのテキストとアイコンの色を変更するにはどうすればよいですか?デフォルトの灰色のテキストは、選択されていないタブバー項目については暗くて読みにくいようです。
このために必要なことが2つあります。
1)TabBar自体をカスタマイズする場合は、tabBarControllerのbarTintColorを設定する必要があります。
// this will generate a black tab bar
tabBarController.tabBar.barTintColor = [UIColor blackColor];
// this will give selected icons and text your apps tint color
tabBarController.tabBar.tintColor = appTintColor; // appTintColor is a UIColor *
2)オーバーライドする各状態のtabBarItemテキストの外観を設定します。
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
NSForegroundColorAttributeName : appTintColor
} forState:UIControlStateSelected];
// doing this results in an easier to read unselected state then the default iOS 7 one
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
NSForegroundColorAttributeName : [UIColor colorWithRed:.5 green:.5 blue:.5 alpha:1]
} forState:UIControlStateNormal];
これは私にとってはうまくいきました。タブバーのアクティブでないアイテムに色を付ける
UITabBarItem *item = [self.tabBar.items objectAtIndex:1];
//ここでは、必要な色のアイコンを使用する必要があります。そのままの状態でレンダリングされます
item.image = [[UIImage imageNamed:@"unselected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//このアイコンは選択されたタブに使用され、定義されているように色付けされます
self.tabBar.tintColor
item.selectedImage = [UIImage imageNamed:@"selected.png"];
エドの答えは完璧ですが、一つだけ付け加えさせてください。 TabBarはデフォルトでは半透明であるため、TabBarの下のビューの色の影響を受けます(つまり、各メンバーviewControllerのビューの色はTabBarの外観に影響します)。
そこで、影響を受けないように以下のコードを設定しました。
self.tabBarController.tabBar.translucent = false;
ここでのエドの答えと一緒に、私が今使っている完全なコードです。
self.tabBarController.tabBar.barTintColor = [UIColor blackColor];
self.tabBarController.tabBar.translucent = false;
self.tabBarController.tabBar.tintColor = [UIColor blueColor];
IOS 8で永続的なテキストの色(選択/非選択)と画像の色(選択/非選択)をテストwithoutタブごとに異なる色の2つの画像を作成:
テキストの色:
[[UITabBar appearance] setTintColor: selectedTabColor ];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
**yourFont**, NSFontAttributeName,
** selectedTabColor**, NSForegroundColorAttributeName,
nil] forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
**yourFont**, NSFontAttributeName,
**selectedTabColor**, NSForegroundColorAttributeName,
nil] forState:UIControlStateSelected];
画像の色:(元の画像の色が選択されていないものとして表示されると仮定)
ITabBarControllerサブクラス-awakeFromNibで:
for (int i =0; i<self.viewControllers.count; i++)
{
UITabBarItem *tab = [self.tabBar.items objectAtIndex:i];
tab.image = [tab.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
}
クレジット:インターネット全体およびスタックオーバーフローXD
これはiOS 8でも完璧に機能するはずです
選択されていないタブバー項目の場合:
[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor: [UIColor whiteColor]];
選択したタブバー項目の場合:
[[UITabBar appearance] setTintColor:[UIColor orangeColor]];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
nil]
上記の@Usharaoの回答は私にとってはうまくいきました。
私の問題は、起動時にすべてのTabBarItemが選択された状態にあり、すべてが同じ「青」の色を持っているように見えた。すべてのタブを1つずつ選択すると、色付きの状態が修正されます。
AppDelegateクラスで以下のコードを使用しました:(> = IOS9と互換性があります)
[[UIView appearanceWhenContainedInInstancesOfClasses:@[[UITabBar class]]]
setTintColor:[UIColor lightGrayColor]];
今からiOS10
使用できるもの
@property (nonatomic, readwrite, copy, nullable) UIColor *unselectedItemTintColor
選択されていない状態のTabBarItem
画像とテキストのデフォルトの色を変更します。
したがって、プロパティtintColor
とunselectedItemTintColor
のペアにより、アイテムの色を完全に制御できます。
やってみます
for (UITabBarItem *item in self.tabBarController.tabBar.items) {
item.image = [[UIImage imageNamed:@"youimage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
nil] forState:UIControlStateNormal];
item.selectedImage = [UIImage imageNamed:@"youimage.png"];
}
つかいます self.tabBarController.tabBar.barStyle = UIBarStyleBlack;
タブバーを黒にする