ios - iOS:如何在 TabBar 的 UIImage 中用另一种颜色替换特定颜色(选择和取消选择)?
问题描述
当它被选中时,我想在我的 UITabBar 中用另一种颜色替换它。目的是获得一张我可以以编程方式更改颜色的图像。
我该怎么做?
let tabBarItem = UITabBarItem(title: menuName, image: unselectedImage, selectedImage: selectedImage)
解决方案
我遇到了同样的问题。您应该创建一个背景白色 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)
推荐阅读
- keyframe - 为什么当我们在时间轴中添加或删除顶点后形状会发生变化
- java - Optaplanner 中的建模活动调度
- java - 正则表达式不起作用将拖尾报价
- python - 有条件格式化时用于 Python TypeError 的 Openpyxl
- swift - UIView 的部分屏幕截图被 UIBezierPath / CGPath
- python - 熊猫条件列添加
- github - Git Flow CLI 与 GitHub 保护的分支不兼容
- c++ - 指向指向 C++ 中结构的指针数组的指针
- certificate - 在带有 tizen studio 2.3 的可穿戴设备 Gear s3 上运行时出现证书错误
- python - Python:函数映射的内存问题