iOS:如何在选项卡栏的UIImage中用另一种颜色替换特定颜色(选择和取消选择)?
当一种颜色被选中时,我想在我的UtiAbbar中将它替换为另一种颜色。目的是得到一个图像,我可以通过编程更改颜色 我怎么做iOS:如何在选项卡栏的UIImage中用另一种颜色替换特定颜色(选择和取消选择)?,ios,swift,uitabbar,uigraphicscontext,Ios,Swift,Uitabbar,Uigraphicscontext,当一种颜色被选中时,我想在我的UtiAbbar中将它替换为另一种颜色。目的是得到一个图像,我可以通过编程更改颜色 我怎么做 let tabBarItem = UITabBarItem(title: menuName, image: unselectedImage, selectedImage: selectedImage) 我查了一下票没有成功: , 我也面临同样的问题。您应该创建一个背景白色png,并将另一个图像放在顶部 具有半透明背景png (我认为你应该使用质量更好的图片,因为你的
let tabBarItem = UITabBarItem(title: menuName, image: unselectedImage, selectedImage: selectedImage)
我查了一下票没有成功:,
我也面临同样的问题。您应该创建一个背景白色png,并将另一个图像放在顶部 具有半透明背景png (我认为你应该使用质量更好的图片,因为你的图片看起来很奇怪)
您是否尝试过将渲染模式设置为.xccess中的Template或编程方式,并将着色颜色更改为渲染图像的imageView,或更改tabor tintColorWorks,谢谢。(对于图片,我会将您的评论转发给笔友:D)
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)