UITabBar 栏项图标默认是灰色的?

UITabBar bar item icons are gray by default?

谁能告诉我 Swift 2.0 如何在我的 UITabBar 图标中覆盖 Xcode 的默认灰色?这个问题不适合我:Tab bar item icons appear darker.

您需要为 UITabBarItem 设置颜色,否则您必须设置 In UITabBarItem 以及您需要为 UITabBarItem 设置 imageInsets 就像 UITabBarItem 是

let customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "favorites.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), selectedImage: UIImage(named: "favorites_h.png")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal))

和 imageInset :

customTabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)

在我的第一个视图控制器的 viewDidLoad 中,我放置了以下内容并且它非常有效:

    let aTabArray: [UITabBarItem] = (self.tabBarController?.tabBar.items)!

    for item in aTabArray {
        item.image = item.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        item.imageInsets = UIEdgeInsetsMake(7, 0, -7, 0)
    }

对于 iOS13+,我使用下面的代码设置 UITabBar 项目标题和图标颜色以支持深色模式。

       if #available(iOS 13, *) {
            let appearance = UITabBarAppearance()
            appearance.shadowImage = UIImage()
            appearance.shadowColor = .white
            
            appearance.stackedLayoutAppearance.normal.iconColor = .label
            appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.label]
            //            appearance.stackedLayoutAppearance.normal.badgeBackgroundColor = .yellow
            
            appearance.stackedLayoutAppearance.selected.iconColor = .myGreen
            appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.myGreen]
            self.tabBar.standardAppearance = appearance
        }