web-dev-qa-db-ja.com

カスタムタブバーアイコンの色

現在、Xcode5を使用してリスト指向のアプリを開発しています。タブバーのカスタム色合い、タブアイコンのカスタム画像、選択したときのタブバーのアイコン画像のカスタム色合いがありますが、選択していないときのアイコン画像の色合いをカスタマイズする方法が見つかりません。今のところ、私の緑色のタブバーとは対照的に、ほとんど見えないデフォルトの灰色です。タブバーのアイコンの画像と名前を白にしたい。

Xcode 5でタブバーアイコンの画像の色合いを設定する方法を知っている人はいますか?

7
ian

これを試して、選択したアイコンに色を付けることができます。

// Custom the tab bar
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];

そしてこれは非アクティブなアイコンに色を付けるために:

[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"item_seleted.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"item_unselected.png"]];
17
Jordan Montel

各タブの(選択されていない)画像のレンダリングモードをUIImageRenderingModeAlwaysOriginalに設定する必要があります。そのため、アプリデリゲートで、タブバーへの参照を取得してから、各タブバーの項目を繰り返し処理し、画像モードを調整します。

タブバーへの参照を取得するためのより良い方法はおそらくありますが、私は次のことを行いました。

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tbc = [sb instantiateInitialViewController];
self.window.rootViewController = tbc;
UITabBar *tb = tbc.tabBar;

次に、画像調整は次のように実行できます。

NSArray *items = tb.items;

for (UITabBarItem *tbi in items) {
    UIImage *image = tbi.image;
    tbi.selectedImage = image;
    tbi.image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
26
Matthew Burke

「ユーザー定義のランタイム属性」を追加することで、コードを記述せずにストーリーボードから純粋にこれを行うことができます。

  1. ストーリーボードでUITabViewControllerを選択します
  2. 「ドキュメントのアウトライン」を開き、シーンで「タブバー」ビューを選択していることを確認します。
  3. 「IDインスペクター」を表示します。 「ユーザー定義のランタイム属性」のセクションが表示されます。
  4. 以下を追加します:
    • キーパス:tintColor
    • タイプ:色
    • 値:必要な色を選択します。
6
tebs1200

この方法を試してください..それは私のために働いた

アプリ内デリゲート

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


 UITabBarController *tabBarController=(UITabBarController*)(self.window.rootViewController);
    UITabBar *tabBar=tabBarController.tabBar;
  UITabBarItem *tabBarItem1=[[tabBar items] objectAtIndex:0];//first tab bar
 [tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"yourImageSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"yourImageUnselected.png"]];//image should be 30 by 30
}

走って行く

ビジュアルエディターにタブバーがある場合は、ここで実行できます。タブバーを選択し、[ユーザー定義のランタイム属性]で属性を追加します。キーパス:選択した画像の色合い色の種類:色の値:

5

選択された未選択の画像でカスタムタブバーを設定します。また、中央にtabbarItem ImageInsetsの位置があります

UITabBar *tabBar = self.tabBarController.tabBar;

UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
UITabBarItem *item3 = [tabBar.items objectAtIndex:3];

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue.png"]  withFinishedUnselectedImage:[UIImage imageNamed:@"iconGray.png"] ];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue2.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-2.png"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue3.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-3.png"]];
[item3 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue4.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-4.png"]];

item0.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
item1.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
item2.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
item3.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);

**最初のviewcontrollerのviewWillAppearメソッド。 ****

4
Ram S

SetFinishedSelectedImage:withFinishedUnselectedImageは非推奨であるため、以下を置き換えて、RamSの回答の変更バージョンを使用しました。

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue.png"]  withFinishedUnselectedImage:[UIImage imageNamed:@"iconGray.png"] ];

と:

[item0 setImage:[[UIImage imageNamed:@"iconGray.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
[item0 setSelectedImage:[[UIImage imageNamed:@"iconBlue.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

詳細については、 ITabBarItem setFinishedSelectedImage:iOS7で非推奨 を参照してください。

3
dstudeba