改色有很多细节,我们这里只探讨最简单的,全部有色点改色
var newImage = image.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) UIGraphicsBeginImageContextWithOptions(newImage.size, false, newImage.scale); UIColor.redColor().set() newImage.drawInRect(CGRectMake(0, 0, newImage.size.width, newImage.size.height)) newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext()
当然,你可以可以写一个Extension
extension UIImage {
func imageWithTintColor(color: UIColor) -> UIImage {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
color.set()
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
UIRectFill(rect)
drawInRect(rect, blendMode: CGBlendMode.DestinationIn, alpha: 1.0)
let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return tintedImage
}
}
更多细节可以参考猫神的文章:https://onevcat.com/2013/04/using-blending-in-ios/