UITabBarの選択色をデフォルトの青から赤に変更する必要があります。どのようにこれを行うのですか?.
2017年9月更新:この回答を書いてから2年が経過し、定期的に賛成票を受け取っているので、これがおそらく最悪の回答だと言えるでしょう。この質問には、エラーが発生しやすく、iOSの更新やデバッグが難しいなどの理由で壊れる可能性があるため、私が記述したことを行わず、UITabBarまたはUITabBarControllerのサブクラス化などのより良いソリューションを適用してください。ありがとう。
これを行うには、UITabBarの「tintColor」属性(キーパス)を設定します。
これでうまくいくはずです。以下のスクリーンショットで確認できます。
これについての詳細:UITabBarのIdentity Inspectorに「Tint」属性がありますが、これはまったく同じことをすると信じていましたが、何もしません。そのデフォルト値は、UITabBarItemが選択されたときの正確なデフォルトの塗りつぶし色です。そのため、安定版リリースのXcode 7で修正されると思います。
IOS5では、UITabBarには selectedImageTintColor プロパティがあり、必要な処理を実行します。
IOS 7では、これは単にtintColorです。これを実現する1つの方法は、UITabBarViewControllerをサブクラス化し、ストーリーボードにカスタムクラスを設定し、サブクラス化されたtabBarVCのviewDidLoad
メソッドに以下を追加することです。
[[self tabBar] setTintColor:[UIColor redColor]];
とても簡単です
ITabBarControllerのカスタムクラスを作成し、-(void)viewDidLoad
メソッドに次の行を追加します。
[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]];
UITextAttributeTextColorはiOS 7では非推奨であるため、以下を使用する必要があります。
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];
TabBarのInterface Builderで次のプロパティを変更するだけです
私の場合は明らかにその白です。
SDKはこれを容易にしませんが、技術的には可能です。 Appleどうやら、これは一貫したルックアンドフィールのビジョンの一部であると信じています。
UITabBarはUIViewのサブクラスです。いつでも独自の-drawRect:
をサブクラス化して実装できます
これは簡単な作業ではありませんが、基本的にクラスを最初から再実装する必要があります。そうしないと、奇妙な副作用が発生する可能性があります。
私はUITabBarItemの選択されたテキストの色を設定する方法を探していて、UIAppearanceプロトコルを使用して、非常にシンプルなメソッドを見つけました。
[UITabBarItem.appearance setTitleTextAttributes:@{
UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal];
[UITabBarItem.appearance setTitleTextAttributes:@{
UITextAttributeTextColor : [UIColor purpleColor] } forState:UIControlStateSelected];
ひどい色はごめんなさい!
IOS 8以降、次のように簡単です。
UITabBar.appearance().tintColor = UIColor.redColor()
iOS 5.0ではこの問題は修正されていますが、解決策はNDAの下にあります。ドキュメントでUITabBarを調べて、やりたいことを簡単に実行できます。