如何制作自定义TabBar?
How to make Custom TabBar?
我必须像上图一样自定义标签栏。但是,我不知道如何自定义这一点,因为项目的名称应该只在选项卡栏被选中时出现,如果没有被选中则项目的名称不应该出现。请帮助我。
你需要做两件事
1- 使所选选项卡颜色为绿色
tabController.tabBar.tintColor = UIColor.green
2- 选择项目时监听 UITabBarControllerDelegate
并为每个未选择的项目分配 text
设置为 ""
的项目
tabController.tabBar.items = [] // set all items
举个例子,写了两个item。
您可以根据 didSelect()
方法中的所选项目分支到 tag
。
在viewWillAppear()
中,我写了第一个项目的标题,因为应用程序首次启动时选择了第一个项目。 (初始化)
希望我的回答对您有所帮助
TabBarController.swift
import UIKit
class TabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
//Setting the UITabBarItem
let tab1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "ViewController")
let tab1BarItem = UITabBarItem(title: "home", image: UIImage(systemName: "seal"), selectedImage: UIImage(systemName: "seal.fill"))
tab1.tabBarItem = tab1BarItem
tab1.tabBarItem.tag = 0
let tab2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "SearchViewController")
let tab2BarItem = UITabBarItem(title: "", image: UIImage(systemName: "checkmark.seal"), selectedImage: UIImage(systemName: "checkmark.seal.fill"))
tab2.tabBarItem = tab2BarItem
tab2.tabBarItem.tag = 1
self.viewControllers = [tab1, tab2]
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if item.tag == 0 { // tab1(home)
item.title = "home"
tabBar.items?[1].title = ""
}
if item.tag == 1 { // tab2(search)
item.title = "search"
tabBar.items?[0].title = ""
}
}
}
预览
我必须像上图一样自定义标签栏。但是,我不知道如何自定义这一点,因为项目的名称应该只在选项卡栏被选中时出现,如果没有被选中则项目的名称不应该出现。请帮助我。
你需要做两件事
1- 使所选选项卡颜色为绿色
tabController.tabBar.tintColor = UIColor.green
2- 选择项目时监听 UITabBarControllerDelegate
并为每个未选择的项目分配 text
设置为 ""
的项目
tabController.tabBar.items = [] // set all items
举个例子,写了两个item。
您可以根据 didSelect()
方法中的所选项目分支到 tag
。
在viewWillAppear()
中,我写了第一个项目的标题,因为应用程序首次启动时选择了第一个项目。 (初始化)
希望我的回答对您有所帮助
TabBarController.swift
import UIKit
class TabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
//Setting the UITabBarItem
let tab1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "ViewController")
let tab1BarItem = UITabBarItem(title: "home", image: UIImage(systemName: "seal"), selectedImage: UIImage(systemName: "seal.fill"))
tab1.tabBarItem = tab1BarItem
tab1.tabBarItem.tag = 0
let tab2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "SearchViewController")
let tab2BarItem = UITabBarItem(title: "", image: UIImage(systemName: "checkmark.seal"), selectedImage: UIImage(systemName: "checkmark.seal.fill"))
tab2.tabBarItem = tab2BarItem
tab2.tabBarItem.tag = 1
self.viewControllers = [tab1, tab2]
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if item.tag == 0 { // tab1(home)
item.title = "home"
tabBar.items?[1].title = ""
}
if item.tag == 1 { // tab2(search)
item.title = "search"
tabBar.items?[0].title = ""
}
}
}
预览