ストーリーボードでタブバーアイテムの選択色を変更する


175

タブバーの項目を選択すると、デフォルトの青ではなくピンクに変更したい。

Xcode 6のストーリーボードエディターを使用してこれをどのように達成できますか?

これが機能していない私の現在の設定です、青い背景は機能しますがピンクは機能しません:

ここに画像の説明を入力してください


tab-bar-item-tint-colorの重複の可能性があります
User31、2014年

この答えを確認してください:解決に役立ちます:stackoverflow.com/a/58727092/7804300
Talha Ahmed

回答:


408

StoryBoardから「tintColor」というランタイムカラー属性を追加します。これは機能しています(Xcode 8以降の場合)。

選択されていない色が必要な場合は、追加することもできunselectedItemTintColorます。

ランタイム属性としてのtintColorの設定


24
このプロパティをUITabBarではなくUITabBarItemに追加すると、うまくいきました。
Sourabh86 2015年

1
しかし、ストーリーボードでタブバーアイテムの選択されていない色をどのように設定しますか?
Peter

1
私の場合に最適です-5つのtabBarアイテムを選択したときに一意の色になるようにする必要があります。私は上のこのランタイム属性を設定することができたUITabBarItem上で、UINavigationController私のタブバーに接続され、それが完璧に動作します。VCクラスを3回再利用しているので、コードをまったく書かなくてもすばらしいです。ありがとう!
rosshump

7
逆に-これはiOSの10の作品は(属性パネルからの色合いがない仕事に思える、とuitabbaritemのランタイム属性「tintColorは」あまりにも動作しないということだけなアプローチである。
luky

5
StackOverflow 1:Apple 0
Sharukh Mastan 2017

175

このエレガントなソリューションは、SWIFT 3.0SWIFT 4.2、およびSWIFT 5.1に最適です。ます。

ストーリーボード上:

  1. あなたの選択 タブバーを
  2. 設定するランタイムAttibuteはと呼ばれるtintColorを所望の色のために選択したアイコンタブバー上
  3. 設定するランタイムAttibuteはと呼ばれるunselectedItemTintColorを所望の色のために選択されていないアイコンタブバー上

ここに画像の説明を入力してください

編集:iOS 10/12以降のXcode 8/10での作業。


6
どうもありがとう。unselectedItemTintColorは非常に珍しいものを見つける
Rushi trivedi

4
'unselectedItemTintColor'のおかげで、完璧な解決策が得られました。
fozoglu 2017年

展開ターゲットが8.0または9.0の場合、これは機能しますか?開発にはswift 3.0とXcode 8.0を使用しました
Mamta 2017

2
タブバーを選択することは重要です。実際、私にとってはSwift 4で機能しました。
Cons Bulaquena

2
優れた!引き続きxCode 10に取り組んでいます:)はビジュアルエディターを更新しませんが、コンパイルすると機能します:)
Mihail Minkov

64

Swiftでは、xcode 7以降を使用して、AppDelegate.swiftファイルに以下を追加できます。

UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

これは、完全なメソッドは次のようになります。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // I added this line
    UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    return true
}

上記の例では、私のアイテムは白になります。「/255.0」が必要なのは、0〜1の値を想定しているためです。白の場合は、1を使用しただけですが、他の色の場合は、RGB値を使用することになります。


3
他の方法はどれも機能しないようです(これ以上)。これは機能します!
テディ

@Jarrod私はこれをほぼ1時間いじりましたが、この回答にはもっと投票する必要があります。ありがとう!
ランスサマリア2017年

53

Xcode8、私は変更されているImageTintストーリーボードから、それがうまく動作します。

ここに画像の説明を入力してください

結果:

ここに画像の説明を入力してください


1
カスタム画像を使用する場合、これは私のために機能したものです
Juanjo

1
これは受け入れられる答えになるはずです。これはランタイム属性を必要としないため、起動画面で機能します。
クリスダグラス

18

Swift 3 | Xcode 10

すべてのタブバー項目を同じ色にしたい場合(選択および非選択)...


ステップ1

画像アセットがRender As = Template Imageに設定されていることを確認してください。これにより、色を継承できます。

Xcodeアセット


ステップ2

ストーリーボードエディタを使用して、タブバーの設定を次のように変更します。

  • セットタブバー:画像の色合いをあなたが継承する、選択したアイコンを好みの色に。
  • タブバー:バーの色合いをタブバーの色に設定します。
  • [表示:色合い]をストーリーボードエディタで表示する色に設定します。これは、アプリの実行時のアイコンの色には影響しません。

Xcode Storyboard Editor


ステップ3

手順1と2は、選択したアイコンの色を変更します。選択されていないアイテムの色を変更したい場合は、コードで変更する必要があります。ストーリーボードエディターでそれを行う方法が見つかりません。

カスタムタブバーコントローラークラスを作成...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}

...そして、カスタムクラスをタブバーシーンコントローラーに割り当てます。

Xcode Storyboard Editor


ストーリーボードエディタで選択されていないアイコンの色を変更する方法を見つけた場合は、お知らせください。ありがとう!


self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) 私のために働く
Wahab Khan Jadon

9

このコードを、色を変更するビューコントローラーのviewDidLoadに配置します。

[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];

1
すべてのタブを変更する方法はありませんか?
Deekor 2014年

ビューに同じ色のコードを配置するだけで、すべてのタブが読み込まれました
Nick

UITabControllerを作成した直後にこのコードを使用できます。選択すると、すべてのタブ項目に指定した色が設定されます。
Jerrin、2015

そのようなメソッドはありませんsetSelectedImageTintColor
Madhu Avinash

8

キーパスによって、選択した画像バーのティントカラーを設定することもできます。

ここに画像の説明を入力してください

これがあなたを助けることを願っています!! ありがとう


iOS 9では、選択されていない色は変更されません
Saeed Rahmatolahi 2017年

UITabBarアイコンの色を変更するのにどのように役立ちますか?
Madhu Avinash

7

XCode 8.2、iOS 10、Swift 3:のunselectedItemTintColor属性がありますtabBar

self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)

6

ストーリーボードでUITabBarItemの色を変更できますが、コードで色を変更したい場合は非常に簡単です。

//これを使用して、選択したバーの色を変更します

   [[UITabBar appearance] setTintColor:[UIColor blueColor]];

//これは選択されていないバーを変更するためのものです(iOS 10)

   [[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];

//そして、すべてのタブバーの色を変更するこの行

   [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];

setUnselectedItemTintColorはiOSの10のためである
ondermerol

5

どういうわけか、ストーリーボードだけを使用してタブバーで選択されたアイテムのティントカラーを変更できないため、ViewDidLoadに以下のコードを追加しました。

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

5

このコードをアプリデリゲート-did_finish_launching_with_options関数に追加します

UITabBar.appearance().tintColor = UIColor( red: CGFloat(255/255.0), green: CGFloat(99/255.0), blue: CGFloat(95/255.0), alpha: CGFloat(1.0) )

必要な色のRGBを置く


4

これは、iOS 10で動作するSwift 3のソリューションです。

まず、独自のタブバーコントローラーサブクラスを作成し、ストーリーボードのタブコントローラーに追加します。このviewDidLoad()メソッドでは、タブバーをカスタマイズできます。ここで、のtintColor属性tabBarは、選択されていないアイテムの色ではなく、選択されたアイテムの色を表すことに注意してください。選択されていないアイテムの色を変更するには、各アイテムをループして画像の元の色を使用することをお勧めします。これにより、それらは自動的に灰色としてレンダリングされません。

class CustomTabBarVC: UITabBarController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        self.tabBar.tintColor = AppColor.normalRed
        self.tabBar.barTintColor = .white
        self.tabBar.isTranslucent = true

        if let items = self.tabBar.items
        {
            for item in items
            {
                if let image = item.image
                {
                    item.image = image.withRenderingMode( .alwaysOriginal )
                }
            }
        }
    }
}

このアプローチの唯一の欠点は、アイテムの画像に、目的の色が既に含まれている必要があることです。


複雑。ジャロッドの答えはすべてのアイコンでうまく機能します。
ホセ・ラミレス


2

をサブクラスUITabBarController化し、ストーリーボードでそれを置き換えることができます。あなたにはviewDidLoad、サブクラスの実装これを呼び出します。

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

取得:'UITabBar' does not have a member named 'setSelectedImageTintColor'
Deekor 2014年

また、私はswiftを使用しているのでself.tabBar.setSelectedImageTintColor = UIColor.greenColor、それが正しいかどうかが
わかり

2
@DeekorではありませtintColorselectedImageTintColor、btw selectedImageTintColorはiOS 8で非推奨です
chancyWu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.