我们有时候需要给图片上绘制一层渲染色,虽然可以在控件上添加一层视图,但是这种做法效率很低,不如直接把图片绘制为带有渲染色的图片来得好
代码:
func tintedImageWithColor(color: UIColor, originalityImage: UIImage!) -> UIImage {
//创建图片位置大小
let imageRect = CGRect(x: 0.0, y: 0.0, width: originalityImage.size.width, height: originalityImage.size.height)
//设置绘制图片上下文
UIGraphicsBeginImageContextWithOptions(imageRect.size, false, originalityImage.scale)
//得到上下文
let context = UIGraphicsGetCurrentContext()
//绘制图片
originalityImage.drawInRect(imageRect)
//设置渲染颜色
CGContextSetFillColorWithColor(context, color.CGColor)
//设置透明度(值可根据需求更改)
CGContextSetAlpha(context, 0.5)
//设置混合模式
CGContextSetBlendMode(context, CGBlendMode.SourceAtop)
//设置位置大小
CGContextFillRect(context, imageRect)
//绘制图片
let imageRef = CGBitmapContextCreateImage(context)
let darkImage = UIImage(CGImage: imageRef!, scale: originalityImage.scale, orientation: originalityImage.imageOrientation)
//完成绘制
UIGraphicsEndImageContext()
return darkImage
}
来使用一下吧
let imageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
view.addSubview(imageView)
let image = UIImage(named: "crab.JPG")
imageView.image = image
原图如下:
设置图片渲染色后:
var image = UIImage(named: "crab.JPG")
image = tintedImageWithColor(UIColor.greenColor(), originalityImage: image)
imageView.image = image
效果如下: