Xcode 11、ベータ2を使用してiOS 13シミュレーターで実行すると、UITabBarItemsの色に問題があります。サンプルプロジェクトを最初から作成しました。バーの色合いの色を指定しないと、すべてが正しく機能します。ただし、Interface Builderを介してカスタムバーティントカラーを指定すると、次のようになります。
Interface Builderで "Bar Tint"プロパティをクリア以外に設定すると、タブバーのすべてのアイテムアイコンの色が選択されます。クリアに設定すると、アイコンが適切に色付けされます。 iOS 12シミュレーターでコンパイルして実行すると、アイコンも適切に色分けされます。
これはXcode 11のバグのようですが、おそらく何か不足していますか?
表面的には、これはバグのように見えるかもしれませんが、UITabBarインスタンスで.unselectedItemTintColorを定義することで軽減できます。
self.tabBar.unselectedItemTintColor = [UIColor lightGrayColor];
IOS 13に新しい外観APIが追加されました。Xcode11.0を使用してタブバー項目のアイコンとテキストに正しく色を付けるには、次のように使用できます。
if #available(iOS 13, *) {
let appearance = UITabBarAppearance()
appearance.backgroundColor = .white
appearance.shadowImage = UIImage()
appearance.shadowColor = .white
appearance.stackedLayoutAppearance.normal.iconColor = .black
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]
appearance.stackedLayoutAppearance.selected.iconColor = .red
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]
self.tabBar.standardAppearance = appearance
}
IBの属性フィールド「イメージティント」を使用します。
Objective Cの場合、AppDelegateで使用できます。
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:0.65f]];
if #available(iOS 13.0, *) {
let appearance = tabBar.standardAppearance
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.blue]
appearance.stackedLayoutAppearance.normal.iconColor = UIColor.black
appearance.stackedLayoutAppearance.selected.iconColor = UIColor.blue
tabBar.standardAppearance = appearance
} else {
tabBar.unselectedItemTintColor = UIColor.black
tabBar.tintColor = UIColor.blue
}
_self.tabBarController?.tabBar.unselectedItemTintColor = UIColor.lightGray
_
これは私にとってSwift 4.で機能します。これをoverride func viewWillDisappear(_ animated: Bool)
メソッドに入れるだけで、ビューが変更されると更新されます。
だからこのようになります
_override func viewWillDisappear(_ animated: Bool) {
self.tabBarController?.tabBar.unselectedItemTintColor = UIColor.lightGray
}
_
これがバグであっても(わかりません)、これを使用して、任意の色を使用してタブバー項目の色を変更できます