![](https://img.haomeiwen.com/i1943974/1fdb90490b664c34.png)
![](https://img.haomeiwen.com/i1943974/7a4dd1890417d98b.png)
配置选项卡栏控制器的选项卡,为每个选项卡提供根视图的视图控制器分配给viewControllers属性。指定的视图控制器的顺序决定了它们在选项卡栏中出现的顺序。
let tabBarItemsArr = [
["title":"工作台",
"vcName":"FirstVC",
"image":"mune_workbench_nor",
"selectImage":"mune_workbench_sel"],
["title":"消息",
"vcName":"SecondVC",
"image":"mune_message_nor",
"selectImage":"mune_message_sel"],
["title":"通讯录",
"vcName":"ThirdVC",
"image":"mune_contact_nor",
"selectImage":"mune_contact_sel"],
["title":"设备",
"vcName":"ForthVC",
"image":"mune_device_nor",
"selectImage":"mune_device_sel"]
]
override func viewDidLoad() {
super.viewDidLoad()
setTabBarItems()
}
func setTabBarItems() {
for item in tabBarItemsArr {
setTabBar(item: item)
}
}
func setTabBar(item: [String:String]) {
guard let nameSpace = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String else { return }
let vcName = nameSpace + "." + item["vcName"]!
guard let classType = NSClassFromString(vcName) else { return }
guard let vcType = classType as? UIViewController.Type else { return }
let vc = vcType.init()
vc.title = item["title"]!
let navi = UINavigationController.init(rootViewController: vc)
navi.tabBarItem = UITabBarItem.init(title: item["title"]!, image: UIImage(named: item["image"]!)!, selectedImage: UIImage(named: item["selectImage"]!)!)
self.addChild(navi)
}
指定最初选择的是哪个视图控制器用selectedIndex
self.selectedIndex = 2
UI样式:
- 背景色
backgroundColor
tabBar.backgroundColor = .white
![](https://img.haomeiwen.com/i1943974/3ab281fe74055119.png)
- 选中Item渲染色
tintColor
tabBar.tintColor = .red
![](https://img.haomeiwen.com/i1943974/e153e1c95e13d152.png)
- 未选中的Item渲染色
unselectedItemTintColor
tabBar.unselectedItemTintColor = .blue
![](https://img.haomeiwen.com/i1943974/e328a5737a3ec9db.png)
4.设置角标及颜色
if let items = self.tabBarController?.tabBar.items {
items[1].badgeValue = "99+"
items[1].badgeColor = .orange
}
![](https://img.haomeiwen.com/i1943974/ebf4dcb152b47a0e.png)
自定义UITabBarViewController
import UIKit
class TabbarVC: UITabBarController {
let tabBarItemsArr = [
["title":"工作台",
"vcName":"FirstVC",
"image":"mune_workbench_nor",
"selectImage":"mune_workbench_sel"],
["title":"消息",
"vcName":"SecondVC",
"image":"mune_message_nor",
"selectImage":"mune_message_sel"],
["title":"通讯录",
"vcName":"ThirdVC",
"image":"mune_contact_nor",
"selectImage":"mune_contact_sel"],
["title":"设备",
"vcName":"ForthVC",
"image":"mune_device_nor",
"selectImage":"mune_device_sel"]
]
override func viewDidLoad() {
super.viewDidLoad()
setupTabBar()
setTabBarItems()
}
func setupTabBar() {
tabBar.backgroundColor = .white
tabBar.tintColor = .color33
tabBar.unselectedItemTintColor = .color99
}
func setTabBarItems() {
for item in tabBarItemsArr {
setTabBar(item: item)
}
self.selectedIndex = 2
}
func setTabBar(item: [String:String]) {
guard let nameSpace = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String else { return }
let vcName = nameSpace + "." + item["vcName"]!
guard let classType = NSClassFromString(vcName) else { return }
guard let vcType = classType as? UIViewController.Type else { return }
let vc = vcType.init()
vc.title = item["title"]!
let navi = UINavigationController.init(rootViewController: vc)
navi.tabBarItem = UITabBarItem.init(title: item["title"]!, image: UIImage(named: item["image"]!)!, selectedImage: UIImage(named: item["selectImage"]!)!)
self.addChild(navi)
}
}
网友评论