我想为每个标签更改“Tintcolor”的问题。但是下面的代码根本不起作用。
我添加了按钮图像,想要使用“UIEdgeInsetsMake”调整大小。但是每当我触摸按钮时按钮都会被调整大小。我不知道为什么。
我正在使用Swift 3。
class MainView: UITabBarController {
var TabFirst = UITabBarItem()
var TabSecond = UITabBarItem()
var TabThird = UITabBarItem()
var TabForth = UITabBarItem()
var TabFifth = UITabBarItem()
override func viewDidLoad() {
super.viewDidLoad()
tabBar.barTintColor = UIColor.white
TabFirst = self.tabBar.items![0]
TabFirst.image = UIImage(named: "btn_1-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
TabFirst.imageInsets = UIEdgeInsetsMake(12, 10, 11, 11)
tabBar.items?[0].title = "length"
TabSecond = self.tabBar.items![1]
TabSecond.image = UIImage(named: "btn_2-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
tabBar.items?[1].title = "length"
TabThird = self.tabBar.items![2]
TabThird.image = UIImage(named: "btn_3-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
tabBar.items?[2].title = "length"
TabForth = self.tabBar.items![3]
TabForth.image = UIImage(named: "btn_4-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
tabBar.items?[3].title = "length"
TabFifth = self.tabBar.items![4]
TabFifth.image = UIImage(named: "btn_5-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
tabBar.items?[4].title = "length"
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
switch item.tag{
case 0:
print("FirstTab")
UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 67/255.0, blue: 99/255.0, alpha: 1.0)
case 1:
print("SecondTab")
UITabBar.appearance().tintColor = UIColor(red: 237/255.0, green: 193/255.0, blue: 53/255.0, alpha: 1.0)
case 2:
print("ThirdTab")
UITabBar.appearance().tintColor = UIColor(red: 70/255.0, green: 183/255.0, blue: 128/255.0, alpha: 1.0)
case 3:
print("ForthTab")
UITabBar.appearance().tintColor = UIColor(red: 12/255.0, green: 195/255.0, blue: 199/255.0, alpha: 1.0)
case 4:
print("FifthTab")
UITabBar.appearance().tintColor = UIColor(red: 105/255.0, green: 72/255.0, blue: 170/255.0, alpha: 1.0)
default:
break
}
}
override func viewWillAppear(_ animated: Bool) {
UIApplication.shared.isStatusBarHidden = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
答案 0 :(得分:0)
修改强> 您在switch语句中缺少中断:
switch item.tag{
此外,您正在对标记进行切换,但我无法在您的代码中看到相应标记它们的任何位置。你应该得到项目的索引。
我不是Swift程序员,这就是你在Objective-C中如何做到这一点给你一个提示:
NSInteger indexOfTab = [[self.tabBar items] indexOfObject:item];
然后执行indexOfTab的switch语句。
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print("the selected index is : \(tabBar.items.index(of: item))")
}
如果您想单独更改" tintColor" ,您应该设置自定义selectedImage。
<强>请注意:强>
默认情况下,会自动创建未选择和选定的图像 来自源图像中的alpha值。防止系统 着色,提供图像与alwaysOriginal。
就documentation而言,没有&#34; tintColor&#34; UITabBarItem的属性。
但是,UITabBar本身有一个tintColor property。但这不单独设置任何内容。
色调
您可以使用指定条形背景的自定义色调颜色 色调(barTintColor)字段。默认背景色调颜色为白色。
使用图像色调(selectedImageTintColor)字段指定条形图 选择该选项卡时,项目的色调颜色。默认情况下,该颜色是 蓝色。
关于调整大小的方法,您应该resize your original image代替check this question,如果它符合您的需要。但是,UITabBar和UITabBarItem自定义仅限于您可以在文档中阅读的内容。
如果您想单独进一步自定义内容,我建议您搜索或创建自定义解决方案。