参考地址:
实现方法一:Swift 实现更改图片的颜色
实现方法二:iOS中使用blend改变图片颜色
当前网上搜到的方法几乎都是这两种。但是不知道在我的代码中不能完美完美实现。
- 第一种方法实现,发现是在原来的颜色上盖上一种半透明的灰色遮罩。原来的颜色还是能展示。
后者参数参照喵神的使用 overlay 保留图片的灰度
let grayImage = image?.imageWithTintColor(tintColor: .black, blendMode: .overlay)
方法实现
func imageWithTintColor(tintColor:UIColor, blendMode:CGBlendMode) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)
tintColor.setFill()
let bounds = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
UIRectFill(bounds)
self.draw(in: bounds, blendMode: blendMode, alpha: 1.0)
if blendMode != .destinationIn {
self.draw(in: bounds, blendMode: .destinati