タブバーの項目を選択すると、デフォルトの青ではなくピンクに変更したい。
Xcode 6のストーリーボードエディターを使用してこれをどのように達成できますか?
これが機能していない私の現在の設定です、青い背景は機能しますがピンクは機能しません:
タブバーの項目を選択すると、デフォルトの青ではなくピンクに変更したい。
Xcode 6のストーリーボードエディターを使用してこれをどのように達成できますか?
これが機能していない私の現在の設定です、青い背景は機能しますがピンクは機能しません:
回答:
StoryBoardから「tintColor」というランタイムカラー属性を追加します。これは機能しています(Xcode 8以降の場合)。
選択されていない色が必要な場合は、追加することもできunselectedItemTintColor
ます。
UITabBarItem
上で、UINavigationController
私のタブバーに接続され、それが完璧に動作します。VCクラスを3回再利用しているので、コードをまったく書かなくてもすばらしいです。ありがとう!
このエレガントなソリューションは、SWIFT 3.0、SWIFT 4.2、およびSWIFT 5.1に最適です。ます。
ストーリーボード上:
編集:iOS 10/12以降のXcode 8/10での作業。
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値を使用することになります。
Swift 3 | Xcode 10
すべてのタブバー項目を同じ色にしたい場合(選択および非選択)...
ステップ1
画像アセットがRender As = Template Imageに設定されていることを確認してください。これにより、色を継承できます。
ステップ2
ストーリーボードエディタを使用して、タブバーの設定を次のように変更します。
ステップ3
手順1と2は、選択したアイコンの色を変更します。選択されていないアイテムの色を変更したい場合は、コードで変更する必要があります。ストーリーボードエディターでそれを行う方法が見つかりません。
カスタムタブバーコントローラークラスを作成...
// TabBarController.swift
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// make unselected icons white
self.tabBar.unselectedItemTintColor = UIColor.white
}
}
...そして、カスタムクラスをタブバーシーンコントローラーに割り当てます。
ストーリーボードエディタで選択されていないアイコンの色を変更する方法を見つけた場合は、お知らせください。ありがとう!
self.tabBar.unselectedItemTintColor = UIColor.white
self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1)
私のために働く
このコードを、色を変更するビューコントローラーのviewDidLoadに配置します。
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
ストーリーボードでUITabBarItemの色を変更できますが、コードで色を変更したい場合は非常に簡単です。
//これを使用して、選択したバーの色を変更します
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
//これは選択されていないバーを変更するためのものです(iOS 10)
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];
//そして、すべてのタブバーの色を変更するこの行
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
これは、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 )
}
}
}
}
}
このアプローチの唯一の欠点は、アイテムの画像に、目的の色が既に含まれている必要があることです。
をサブクラスUITabBarController
化し、ストーリーボードでそれを置き換えることができます。あなたにはviewDidLoad
、サブクラスの実装これを呼び出します。
[self.tabBar setTintColor:[UIColor greenColor]];
'UITabBar' does not have a member named 'setSelectedImageTintColor'
self.tabBar.setSelectedImageTintColor = UIColor.greenColor
、それが正しいかどうかが
tintColor
んselectedImageTintColor
、btw selectedImageTintColor
はiOS 8で非推奨です