更改标签栏未选中图标颜色迅捷

时间:2016-08-31 09:17:29

标签: swift uitabbarcontroller

我有标签栏,我想将图标颜色从默认灰色更改为白色, 我在AppDelegate中添加了这一行

UITabBar.appearance().barTintColor = UIColor(red:0.51, green:0.39, blue:0.37, alpha:1.0)

这是更改selected项,我如何使用未选择的方式执行此操作?

3 个答案:

答案 0 :(得分:2)

在以下使用Swift:

self.tabBar.unselectedItemTintColor = UIColor.white

答案 1 :(得分:1)

假设您已经将图标设置为您想要的颜色(在Photoshop或草图或其他内容中),您可以通过属性检查器完成此操作。

转到故事板,找到您的视图控制器(应该已经嵌入到标签栏控制器中),然后选择视图控制器底部的标签栏。

在属性检查器中,将“条形图”下的“图像”设置为未选中的标签栏项目图像(应该在您的资产中),并将标签栏项目下的“选定图像”设置为您选择的版本。

接下来,转到资产目录,选择图像,然后在属性检查器的“图像集”下,将“渲染为”设置为“原始图像”。为所有图标执行此操作。

现在应该可以了

答案 2 :(得分:0)

根据以下代码更改标签栏控制器的更改标签项目 选中和取消选择的颜色。

class TabbarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UITabBar.appearance().tintColor = UIColor.purpleColor()

        // set red as selected background color
        let numberOfItems = CGFloat(tabBar.items!.count)
        let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
        tabBar.selectionIndicatorImage = UIImage.imageWithColor(UIColor.lightTextColor().colorWithAlphaComponent(0.5), size: tabBarItemSize).resizableImageWithCapInsets(UIEdgeInsetsZero)

        // remove default border
        tabBar.frame.size.width = self.view.frame.width + 4
        tabBar.frame.origin.x = -2

    }

    override func viewWillAppear(animated: Bool) {
        // For Images
        let firstViewController:UIViewController = NotificationVC()
        // The following statement is what you need
        let customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "notification@2x")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), selectedImage: UIImage(named: "notification_sel@2x"))
        firstViewController.tabBarItem = customTabBarItem

        for item in self.tabBar.items! {
            let unselectedItem = [NSForegroundColorAttributeName: UIColor.whiteColor()]
            let selectedItem = [NSForegroundColorAttributeName: UIColor.purpleColor()]

            item.setTitleTextAttributes(unselectedItem, forState: .Normal)
            item.setTitleTextAttributes(selectedItem, forState: .Selected)
        }
    } 
}

extension UIImage {
    class func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
        let rect: CGRect = CGRectMake(0, 0, size.width, size.height)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFill(rect)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }

}