美文网首页iOS Developer
使图片显示成相应颜色的方法

使图片显示成相应颜色的方法

作者: Matt_Yuen | 来源:发表于2017-06-14 14:40 被阅读18次

    把图片直接渲染成相应的颜色(此方法我是定义在UIImage的类别中的)

    /**
     把UIImage对象渲染成相应的颜色
    
     @param color 颜色
     @return UIImage对象
     */
    - (UIImage *)tintColor:(UIColor *)color
    {
        UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextTranslateCTM(context, 0, self.size.height);
        CGContextScaleCTM(context, 1.0, -1.0);
        CGContextSetBlendMode(context, kCGBlendModeNormal);
        CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
        CGContextClipToMask(context, rect, self.CGImage);
        [color setFill];
        CGContextFillRect(context, rect);
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }
    

    最开始,我是使用另外一种方式将图片显示成需求颜色的,如下:

    //下面只是创建可以一个ImageView,在上面显示一张图片,需求是将图片显示成orange颜色
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    imageView.center = self.view.center;
    //***需要设置imageView的'tintColor'属性为最终渲染颜色
    imageView.tintColor = [UIColor orangeColor];
    [self.view addSubview:imageView];
    //对于image来说,也需要设置一个相应的属性才能最终显示成需求颜色
    //即'imageWithRenderingMode:'方法
    UIImage *image = [UIImage imageNamed:@"ic_contact_list_hint"];
    image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    //设置imageView的'image'属性即可
    imageView.image = image;
    

    个人看来,还是直接用第一种方法来的更加直观一些,也不需要设置那么多的属性,比较方便,当然具体的区别和适用场景没有研究过,还请大家多指点。

    相关文章

      网友评论

        本文标题:使图片显示成相应颜色的方法

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