Swift TabBar项目颜色和背景颜色

时间:2015-05-29 16:19:03

标签: swift ios8 uitabbarcontroller

我正在尝试在TabBarController中的TabBar上设置单个项目的图标颜色和背景颜色。

我的TabBar上有5个图标,其中4个我设置了颜色,这只是我正在努力的最后一个图标。我在图片下面附上了一个链接,以显示我想要实现的目标。

我的相机输入的特定图标(图像中间的图标),此图标我想要为白色,背景为红色。 到目前为止我的代码是这样的 - 在我的TabBarController上:

var imageNames = ["FeedIcon", "ExploreIcon", "CameraIcon", "ActivityIcon", "MyProfileIcon"]

    let tabItems = tabBar.items as! [UITabBarItem]
    for (index, value) in enumerate(tabItems)
    {
       var imageName = imageNames[index]
        value.image = UIImage(named: imageName)
        value.imageInsets = UIEdgeInsetsMake(5.0, 0, -5.0, 0)

    }
    //for below i've used a extension for imageWithColor to set the color of my icons
    for tabItems in self.tabBar.items as! [UITabBarItem] {
        if let image = tabItems.image {
            tabItems.image = image.imageWithColor(UIColor(red: 57.0/255.0, green: 57.0/255.0, blue: 57.0/255.0, alpha: 1.0)).imageWithRenderingMode(.AlwaysOriginal)
        }
    }

我的推广:

    extension UIImage {
    func imageWithColor(tintColor: UIColor) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)

        let context = UIGraphicsGetCurrentContext() as CGContextRef
        CGContextTranslateCTM(context, 0, self.size.height)
        CGContextScaleCTM(context, 1.0, -1.0);
        CGContextSetBlendMode(context, kCGBlendModeNormal)

        let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect
        CGContextClipToMask(context, rect, self.CGImage)
        tintColor.setFill()
        CGContextFillRect(context, rect)

        let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage
        UIGraphicsEndImageContext()

        return newImage
    }
}

enter image description here

1 个答案:

答案 0 :(得分:0)

可能有点晚但是要创建这个“相机项目”我认为唯一的解决方案是创建一个UIButton并将按钮的中心设置为UITabBar的中心。您可以在此post中查看如何执行此操作。之后,您可以将图像设置为具有此背景颜色的按钮。

<强>更新

我用swift创建了这个sample project,您可以在其中看到如何在tabBar上添加此按钮。

主要问题是继承UITabBarController并添加此类的按钮。

delete