可以通过以下代码示例实现:
var selectedTabIndex: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
// 循环标签页并自定义外观
for tab in tabBar.items! {
tab.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.gray], for: UIControlState.normal)
tab.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.black], for: UIControlState.selected)
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
guard let index = tabBar.items?.index(of: item) else { return }
if index != selectedTabIndex {
// 每当选择不同的标签时更新索引并高亮标签
selectedTabIndex = index
highlightTab(tabAtIndex: selectedTabIndex)
}
}
func highlightTab(tabAtIndex index: Int) {
// 循环标签页,将被选中的标签高亮
for (i, tab) in tabBar.items!.enumerated() {
if i == index {
tab.image = tab.image?.withRenderingMode(.alwaysOriginal)
tab.selectedImage = tab.selectedImage?.withRenderingMode(.alwaysOriginal)
} else {
tab.image = tab.image?.withRenderingMode(.alwaysTemplate)
tab.selectedImage = tab.selectedImage?.withRenderingMode(.alwaysTemplate)
tab.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.gray], for: UIControlState.normal)
}
}
}
在每次选中不同的标签页时,将该标签页的外观修改为所需高亮的样式,同时将之前已经高亮的标签页的外观改为默认状态。这样就可以实现
上一篇:不切割的字符串回文分割的解释。
下一篇:不切换到下一个FXML文件?