如何自定义tintColor并调整UITabBarItem的大小

时间:2017-02-04 08:53:48

标签: swift resize tabbar uitabbaritem tintcolor

我想为每个标签更改“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()
    }

}

1 个答案:

答案 0 :(得分:0)

修改 您在switch语句中缺少中断

switch item.tag{

此外,您正在对标记进行切换,但我无法在您的代码中看到相应标记它们的任何位置。你应该得到项目的索引。

我不是Swift程序员,这就是你在Objective-C中如何做到这一点给你一个提示:

NSInteger indexOfTab = [[self.tabBar items] indexOfObject:item];

然后执行indexOfTab的switch语句。

Here is the Swift version.

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自定义仅限于您可以在文档中阅读的内容。

如果您想单独进一步自定义内容,我建议您搜索或创建自定义解决方案。