web-dev-qa-db-ja.com

iOS 7でtabBarItemsのテキストとアイコンの色を変更するにはどうすればよいですか?

IOS 7でUITabBarとUITabBarItemのテキストとアイコンの色を変更するにはどうすればよいですか?デフォルトの灰色のテキストは、選択されていないタブバー項目については暗くて読みにくいようです。

27
Ed Fernandez

このために必要なことが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];
69
Ed Fernandez

これは私にとってはうまくいきました。タブバーのアクティブでないアイテムに色を付ける

UITabBarItem *item = [self.tabBar.items objectAtIndex:1];

//ここでは、必要な色のアイコンを使用する必要があります。そのままの状態でレンダリングされます

item.image = [[UIImage imageNamed:@"unselected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

//このアイコンは選択されたタブに使用され、定義されているように色付けされます

self.tabBar.tintColor
item.selectedImage = [UIImage imageNamed:@"selected.png"];
43
atrik

エドの答えは完璧ですが、一つだけ付け加えさせてください。 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];
11

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

7
Kappe

タブバーでテキストの色を変更するコードなしの方法:

IOS 10を使用している場合は、タブバーの画像の色合いを変更できます

enter image description here

IOS 9以前もサポートしている場合は、各タブバー項目のユーザー定義ランタイム属性にtintColorを追加する必要もあります。

enter image description here

アイコンの色も変更したい場合は、正しいカラー画像がassestフォルダにあることを確認し、Render as as Original Imageを変更してください

enter image description here

これはiOS 8でも完璧に機能するはずです

選択されていないタブバー項目の場合:

[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor: [UIColor whiteColor]];

選択したタブバー項目の場合:

[[UITabBar appearance] setTintColor:[UIColor orangeColor]];
3
Usharao
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor whiteColor], UITextAttributeTextColor,
                                                           nil] 
2
user2239796

上記の@Usharaoの回答は私にとってはうまくいきました。

私の問題は、起動時にすべてのTabBarItemが選択された状態にあり、すべてが同じ「青」の色を持っているように見えた。すべてのタブを1つずつ選択すると、色付きの状態が修正されます。

AppDelegateクラスで以下のコードを使用しました:(> = IOS9と互換性があります)

[[UIView appearanceWhenContainedInInstancesOfClasses:@[[UITabBar class]]] 
                                        setTintColor:[UIColor lightGrayColor]];
0
Wayne

今からiOS10使用できるもの

@property (nonatomic, readwrite, copy, nullable) UIColor *unselectedItemTintColor

選択されていない状態のTabBarItem画像とテキストのデフォルトの色を変更します。

したがって、プロパティtintColorunselectedItemTintColorのペアにより、アイテムの色を完全に制御できます。

0
malex

やってみます

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"];
    }
0

つかいます self.tabBarController.tabBar.barStyle = UIBarStyleBlack;タブバーを黒にする

0
UUDDLRLRSL_