在做项目的时候碰到了一个需求,把app的主题颜色改变成另外一种颜色,由于没有给出新的素材图片,需要把现有图片的颜色改变一下。下面是改变图片颜色的方法(一般对于单一颜色的图片)
imageWithRenderingMode:
UIImage有一个方法imageWithRenderingMode:
,通过它设置图片的渲染模式,再通过设置tintcolor,就可以改变图片颜色。其中参数部分UIIMageRenderingMode有三个枚举对应不同的渲染模式:
typedef NS_ENUM(NSInteger, UIImageRenderingMode) {
UIImageRenderingModeAutomatic, // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式
UIImageRenderingModeAlwaysOriginal, // 始终绘制图片原始状态,不使用Tint Color
UIImageRenderingModeAlwaysTemplate, // 始终根据Tint Color绘制图片,忽略图片的颜色信息
}
使用实例:
UIImage *image = [UIImage imageNamed:@"imageName"];
self.ImageView.image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[self.ImageView setTintColor:[UIColor redColor]];
imageWithTintColor:
iOS13发布后,UIImage有一个新增方法imageWithTintColor:
,可以通过它改变图片颜色
使用实例:
UIImage *image = [UIImage imageNamed:@"imageName"];
self.ImageView.image = [image imageWithTintColor:[UIColor redColor]];