Swift 实现更改图片的颜色

1.下面这段代码可以更改图片的颜色,但是只能更为只用颜色.比如你是灰色的图片,你想更改为红色或是其他颜色都可以用如下代码实现:

import UIKit

extension UIImage {

func imageWithTintColor(tintColor:UIColor, blendMode:CGBlendMode) -> UIImage {

UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)

tintColor.setFill()

let bounds = CGRectMake(0, 0, self.size.width, self.size.height)

UIRectFill(bounds)

self.drawInRect(bounds, blendMode: blendMode, alpha: 1.0)

if blendMode != .DestinationIn {

self.drawInRect(bounds, blendMode: .DestinationIn, alpha: 1.0)

}

let tintedImage = UIGraphicsGetImageFromCurrentImageContext()

UIGraphicsEndImageContext()

return tintedImage

}

}

2.直接在需要更给图片颜色的控制器中直接使用:

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var imageV: UIImageView!

override func viewDidLoad() {

super.viewDidLoad()

let img = UIImage(named: "图片")?.imageWithTintColor(UIColor.redColor(), blendMode: .Overlay)

imageV.image = img

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

3.好吧你只要使用如上代码就可以实现图片更改颜色了.

4.什么?你告诉我苹果官方有个更简单的改变图片的颜色属性。

UIImageRenderingModeAlwaysTemplate 是UIImage渲染模式renderingMode枚举类型中的其中一个,除去这个外还有另外两个

UIImageRenderingModeAutomatic        // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式(默认属性)。

UIImageRenderingModeAlwaysOriginal  // 始终绘制图片原始状态,设置Tint Color属性无效。

UIImageRenderingModeAlwaysTemplate  // 始终根据Tint Color绘制图片(颜色)显示,忽略图片的颜色信息(也就是图片原本的东西是不显示的)。

调用此属性

UIImage *image = [UIImage imageNamed:@"111.jpg"];

image = [image imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate];

有何用处

个人经常用到的有两种

A

美工切出来一个返回按钮  颜色是黄色 但有一个页面需要这个返回按钮是红色  那就没必要美工再切一张红色的按钮,而是利用UIImageRenderingModeAlwaysTemplate这个属性把黄色按钮改成红色

例  代码

UIImage *image = [UIImage imageNamed:@"111.jpg"];

image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];

imageView.image = image;

imageView.tintColor = [UIColor purpleColor];

[self.view addSubview:imageView];

B

UIButton 的点击状态  因为UIButton设置背景色  点击UIButton  是没有点击色的  但是UIButton的背景图片有点击色 那就可以利用UIImageRenderingModeAlwaysTemplate这个属性改变任意一张图片的颜色为我们需要的那个颜色

例  代码

UIImage *image = [UIImage imageNamed:@"111.jpg"];

image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

btn.tintColor = [UIColor brownColor];

[btn setBackgroundImage:image forState:UIControlStateNormal];

[self.view addSubview:btn];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容