ios - iOS:如何在TabBar的UIImage中将特定颜色替换为另一种颜色(选择和取消选择)?

标签 ios swift uitabbar uigraphicscontext

选择后,我想在UITabBar中用另一种颜色替换它。目的是获得一张我可以以编程方式更改颜色的图像。
我该怎么做?

let tabBarItem = UITabBarItem(title: menuName, image: unselectedImage, selectedImage: selectedImage)  
我检查了票,但没有成功:
link1link2
enter image description here

最佳答案

我遇到了同样的问题。您应该创建一个背景白色png,并将其他图像放在顶部
具有半透明的背景png。
(而且我认为您应该使用质量更好的图像,因为您的图片看起来很奇怪)

                let iconWhite: UIImage? = self.load(fileName: "APP/icones/\(iconName).png")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
                        
                        
        //UNSELECT IMAGE
                        var unselectedImgBack = UIImage(named: "white.png")
                        var unselectedImgFront = iconWhite?.overlayImage(color: UIColor.black)
                        
                        let size = unselectedImgFront?.size
                        unselectedImgBack = unselectedImgBack?.resized(to: size!)
                        UIGraphicsBeginImageContext(size!)
                        let areaSize = CGRect(x: 0, y: 0, width: size!.width, height: size!.height)
                        unselectedImgBack!.draw(in: areaSize)
                        unselectedImgFront!.draw(in: areaSize, blendMode: .normal, alpha: 1)
                        unselectedImgFront = UIGraphicsGetImageFromCurrentImageContext()!
                        UIGraphicsEndImageContext()
                        
                        let unselectedImage =  unselectedImgFront!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
                        
        //SELECT IMAGE
                        
                        var selectedImgBack = UIImage(named: "white.png")
                        var selectedImgFront = iconWhite
                        
                        let scanner2 = Scanner(string: color)
                        var value: UInt64 = 0
                        
                        if scanner2.scanHexInt64(&value) {
                            print("Decimal: \(value)")
                            print("Hex: 0x\(String(value, radix: 16))")
                        }
                        selectedImgBack = selectedImgBack?.overlayImage(color: UIColor.init(rgb: Int(value)))

                        selectedImgBack = selectedImgBack?.resized(to: size!)
                        UIGraphicsBeginImageContext(size!)
                        selectedImgBack!.draw(in: areaSize)
                        selectedImgFront!.draw(in: areaSize, blendMode: .normal, alpha: 0.8)
                        selectedImgFront = UIGraphicsGetImageFromCurrentImageContext()!
                        UIGraphicsEndImageContext()
                        
                        let selectedImage = selectedImgFront!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)

关于ios - iOS:如何在TabBar的UIImage中将特定颜色替换为另一种颜色(选择和取消选择)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63745871/

相关文章:

ios - 在 Safari 中打开生成的 html 文件

ios - iOS10 和 swift 3 中的 PUSH 问题

从完成 block 中快速获取最终数组

ios - 我们如何创建一个更大的中心 UITabBar Item

ios - React-native-fbsdk 与 pod FBSDKCoreKit 相关的问题

ios7:如何跟踪通知等系统内部信息

ios - CUICatalog : Invalid asset name supplied: , 或无效比例因子 : 2. 000000

ios - 快速导入 MediaPlayer 时遇到错误

ios - 将子 UIViewConroller 添加到 UITabBarController

ios - 设计IOS标签栏的自定义图标