美文网首页Swift
Swift 实现更改图片的颜色

Swift 实现更改图片的颜色

作者: 平凡的心 | 来源:发表于2016-10-20 11:36 被阅读761次

    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];

    相关文章

      网友评论

        本文标题:Swift 实现更改图片的颜色

        本文链接:https://www.haomeiwen.com/subject/icyfuttx.html