更改未选择的标签栏项目图像的颜色而不使其成为原始图像

Posted

技术标签:

【中文标题】更改未选择的标签栏项目图像的颜色而不使其成为原始图像【英文标题】:Change color of unselected tabbar item image without making it original 【发布时间】:2016-06-04 06:31:14 【问题描述】:

我关注了这个Question 它适用于 UITabBar 项目文本,但如果我使用原始图像,则无法更改所选 UITabBar 项目图像的颜色

我正在更改图像色调颜色并通过storyBoard而不是以编程方式使其成为原始颜色,即“selectedImageTintColor”(这是在选择模板图像时更改标签栏项目图像颜色而不是原始图像)

【问题讨论】:

【参考方案1】:

更新到 Swift 3

在 UITabbarcontroller 中使用此代码

    //User this line for selected Tabbar Image tint colour

    UITabBar.appearance().tintColor = UIColor.purple

    // You can set tab colours as per requirement here
    // set red as selected background color
    let numberOfItems = CGFloat(tabBar.items!.count)
    let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
    tabBar.selectionIndicatorImage = UIImage.imageWithColor(color: UIColor.red, size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero)

    // remove default border
    tabBar.frame.size.width = self.view.frame.width + 4
    tabBar.frame.origin.x = -2

并将此扩展用于图像颜色

extension UIImage 
    class func imageWithColor(color: UIColor, size: CGSize) -> UIImage 
       let rect: CGRect = CGRect(x: 0,y: 0, width: size.width,height: size.height)
       UIGraphicsBeginImageContextWithOptions(size, false, 0)
       color.setFill()
       UIRectFill(rect)
       let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
       UIGraphicsEndImageContext()
       return image
   

【讨论】:

对不起,你错过了理解这个问题。我需要未选择的标签栏项目图像 你在 UITabbarcontroller 中使用了这行代码:-UITabBar.appearance().tintColor = UIColor.purpleColor()

以上是关于更改未选择的标签栏项目图像的颜色而不使其成为原始图像的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 iOS 7 中未选择的标签栏项目的颜色?

将原始图像设置为标签栏项目

如何更改标签栏中未选中项目的颜色?

标签栏控制器中标签栏项目的不同颜色

快速使用标签栏上的不同图标

Swift:更改标签栏的图像色调颜色?