Search code examples
iosswiftstoryboardtabbaruitabbaritem

how to customize tabbar items which is added on storyboard


I made UITabbar controller and make 5 tabbar buttons on Storyboard.

But I cannot control image sizes and colors in tabbar items. And I want to customize button colors and shapes using PNG files, not using default colors.

But the below code is not working at well except tabbar tintcolor.

class MainView: UITabBarController {

override func viewDidLoad() {
    super.viewDidLoad()

    tabBar.barTintColor = UIColor.white

}

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    switch item.tag{
    case 0:
        print(item.tag)
        UITabBar.setItems(item[0]) = UITabBarItem(title: "Magzine", image: UIImage(named: "exhibiter.png"), selectedImage: UIImage(named: "exhibiterselected.png"))
    case 1:
        print("")
    case 2:
        print("")
    case 3:
        print("")
    case 4:
        print("")
    default:
        break
    }
}

override func viewWillAppear(_ animated: Bool) {
    UIApplication.shared.isStatusBarHidden = false
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}


Solution

  • you can use like this

    class TabBarViewController: UITabBarController {
    
        required init(coder aDecoder: NSCoder) {
    
        super.init(coder: aDecoder)!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        UITabBar.appearance().tintColor = UIColor(red: 254/255.0, green: 105/255.0, blue: 51/255.0, alpha: 100.0)
    
        for i in 0 ..< self.tabBar.items!.count {
    
            switch i {
    
            case 0:
    
                tabBar.items?[0].title = "Home"
                let firstTab = self.tabBar.items![i] as UITabBarItem
                learnTab.image = UIImage(named: "Homedeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                firstTab.selectedImage = UIImage(named: "Homedeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                firstTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0)
                firstTab.titlePositionAdjustment = UIOffsetMake(0, -4)
    
    
            case 1:
    
                tabBar.items?[1].title = "Request"
                let secondTab = self.tabBar.items![i] as UITabBarItem
                secondTab.image = UIImage(named: "RequestDeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                secondTab.selectedImage = UIImage(named: "Requestselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                secondTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0)
                secondTab.titlePositionAdjustment = UIOffsetMake(0, -4)
    
            case 2:
    
                tabBar.items?[2].title = "Renew"
                let thirdTab = self.tabBar.items![i] as UITabBarItem
                 thirdTab.image = UIImage(named: "RenewDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                thirdTab.selectedImage = UIImage(named: "RenewSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                thirdTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0)
                thirdTab.titlePositionAdjustment = UIOffsetMake(0, -4)
    
            case 3:
    
                tabBar.items?[3].title = "ReSell"
                let forthTab = self.tabBar.items![i] as UITabBarItem
                forthTab.image = UIImage(named: "ReSellDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                forthTab.selectedImage = UIImage(named: "ReSellSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                forthTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0)
                forthTab.titlePositionAdjustment = UIOffsetMake(0, -4)
    
            case 4:
    
                tabBar.items?[4].title = "ReCycle"
                let fifthTab = self.tabBar.items![i] as UITabBarItem
                fifthTab.image = UIImage(named: "ReCycleDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                fifthTab.selectedImage = UIImage(named: "ReCycleSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
                fifthTab.imageInsets = UIEdgeInsetsMake(-2, 0, 2, 0)
                fifthTab.titlePositionAdjustment = UIOffsetMake(0, -5)
    
            default:
                break
            }
        }
    }
    
    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
    
    
    
    
        }
    
    }