web-dev-qa-db-ja.com

Xcode 11、ベータ2のインターフェイスビルダーでバーティントカラーが指定されている場合、iOS 13ではUITabBarItemアイコンが正しく色付けされない

Xcode 11、ベータ2を使用してiOS 13シミュレーターで実行すると、UITabBarItemsの色に問題があります。サンプルプロジェクトを最初から作成しました。バーの色合いの色を指定しないと、すべてが正しく機能します。ただし、Interface Builderを介してカスタムバーティントカラーを指定すると、次のようになります。

Both selected an unselected item icons have highlight color

Interface Builderで "Bar Tint"プロパティをクリア以外に設定すると、タブバーのすべてのアイテムアイコンの色が選択されます。クリアに設定すると、アイコンが適切に色付けされます。 iOS 12シミュレーターでコンパイルして実行すると、アイコンも適切に色分けされます。

これはXcode 11のバグのようですが、おそらく何か不足していますか?

10
Jordan Wood

表面的には、これはバグのように見えるかもしれませんが、UITabBarインスタンスで.unselectedItemTintColorを定義することで軽減できます。

self.tabBar.unselectedItemTintColor = [UIColor lightGrayColor];
13
mmackh

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

    } 
24
Samuël

IBの属性フィールド「イメージティント」を使用します。

Use the attribute field "Image Tint" in IB

4
Ivan Belousov

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]];
1
Ing. Ron
    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
    }
0
_self.tabBarController?.tabBar.unselectedItemTintColor = UIColor.lightGray
_

これは私にとってSwift 4.で機能します。これをoverride func viewWillDisappear(_ animated: Bool)メソッドに入れるだけで、ビューが変更されると更新されます。

だからこのようになります

_override func viewWillDisappear(_ animated: Bool) {
    self.tabBarController?.tabBar.unselectedItemTintColor = UIColor.lightGray
}
_

これがバグであっても(わかりません)、これを使用して、任意の色を使用してタブバー項目の色を変更できます

0
Bhavin p