web-dev-qa-db-ja.com

iOS 7で選択したタブバーアイコンの色を変更するには?

私はこの質問が以前にも尋ねられたことを知っていますが、それでもインターネットで解決策を検索する解決策は得られませんでした。

私は次の投稿を参照しました:

iOS 7でtabBarItemsのテキストとアイコンの色を変更するにはどうすればよいですか?tintColorを使用してのみ選択したアイコンの色を変更できます。

iOS 7で選択されていないタブバーアイテムの色を変更するにはどうすればよいですか?これには、UIViewから継承された独自のGozTabBarクラスが記述されています

選択されていない状態のUITabBarアイコンのデフォルトの灰色を変更したい。

任意の助けをいただければ幸いです。前もって感謝します。

18
Vinay Jain

TintColorを使用して色を変更したくないと思いますか?もう1つのオプションは、まったく同じように見えますが、色が異なる2つの画像を使用することです。 1つの画像は選択されたタブで、もう1つの画像は選択されていません。

_AppDelegate.m_ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions関数で、これを試してください。

_UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;

// repeat for every tab, but increment the index each time
UITabBarItem *firstTab = [tabBar.items objectAtIndex:0];

// also repeat for every tab
firstTab.image = [[UIImage imageNamed:@"someImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
firstTab.selectedImage = [[UIImage imageNamed:@"someImageSelected.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
_

編集:ルートビューコントローラーとしてタブバーコントローラーを持っていない人のために、このようにコントローラーをつかむことができ、コードの残りの部分は同じです。

_UITabBarController *tabBarController = self.tabBarController;_

41
Inertiatic

Storyboardを使用してタブバーの画像を既に構成している場合は、最初のビューのViewDidLoadで次のメソッドを呼び出すだけです。

-(void) configTabBar
{     
    UITabBarController *tabBarController = [self tabBarController];
    UITabBar *tabBar = tabBarController.tabBar;

    for (UITabBarItem  *tab in tabBar.items) {
        tab.image = [tab.image imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
        tab.selectedImage = [tab.image imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
    }
}
13
Luismi
[[UITabBar appearance] setTintColor:[UIColor colorWithRed:252/255.0 green:218/255.0 blue:49/255.0 alpha:1.0]];

tabBarItem1.image = [[UIImage imageNamed:@"home_icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    tabBarItem1.selectedImage = [UIImage imageNamed:@"home_icon_selected.png"];

[[UITabBar appearance] setBackgroundColor:[UIColor colorWithRed:15/255.0 green:85/255.0 blue:160/255.0 alpha:1.0]];
    // Change the title color of tab bar items
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       [UIColor whiteColor], NSForegroundColorAttributeName,
                                                       nil] forState:UIControlStateNormal];
    UIColor *titleHighlightedColor = [UIColor colorWithRed:252/255.0 green:218/255.0 blue:49/255.0 alpha:1.0];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       titleHighlightedColor, NSForegroundColorAttributeName,
                                                       nil] forState:UIControlStateHighlighted]
2
Muhammad Adnan

iOS8で強調表示されたUIControlStateを選択されたUIControlStateに変更します

 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor whiteColor], NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           titleHighlightedColor, NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateSelected]
1
posha