UITabBarController

/// TabBarItem配置信息
fileprivate struct TabBarItemInfo {
    var vc: UIViewController
    var title: String
    var normalImgName: String
    var selectedImgName: String
}

class TabbarController: UITabBarController {
    
    fileprivate let vcInfos = [TabBarItemInfo(vc: HomeVC(),
                                              title: "首页",
                                              normalImgName: "main_tabbar_wifi_normal",
                                              selectedImgName:  "main_tabbar_wifi_selected"),
                               TabBarItemInfo(vc: MineVC(),
                                              title: "我的",
                                              normalImgName: "main_tabbar_speed_test_normal",
                                              selectedImgName:  "main_tabbar_speed_test_selected"),
                               TabBarItemInfo(vc: SettingVC(),
                                              title: "设置",
                                              normalImgName: "main_tabbar_setting_normal",
                                              selectedImgName:  "main_tabbar_setting_selected")]
    

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置不透明
        self.tabBar.isTranslucent = false
        
        // tabBar背景颜色
        self.tabBar.barTintColor = UIColor.white
        
        // 隐藏tabBar分割线
//        self.tabBar.backgroundImage = UIImage()
//        self.tabBar.shadowImage = UIImage()
        
        // 设置子控制器
        self.viewControllers = self.setupViewControllers()
    }
    
    /// 设置ViewControllers的TabBarItem
    fileprivate func setupViewControllers() -> [UIViewController] {
        var vcs = [UIViewController]()
        for info in vcInfos {
            let vc = NavigationController(rootViewController: info.vc)
            vcs.append(vc)
            vc.tabBarItem.title = info.title
            vc.tabBarItem.image = UIImage(named:  info.normalImgName)?.withRenderingMode(.alwaysOriginal)
            vc.tabBarItem.selectedImage = UIImage(named: info.selectedImgName)?.withRenderingMode(.alwaysOriginal)
            vc.tabBarItem.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
            vc.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -2)
            vc.tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 10),
                                                  NSAttributedString.Key.foregroundColor: UIColor.black],
                                                 for: UIControl.State.normal)
            vc.tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 10),
                                                  NSAttributedString.Key.foregroundColor: UIColor.red],
                                                 for: UIControl.State.selected)
        }
        return vcs
    }
}

你可能感兴趣的:(UITabBarController)