How can I change image tintColor

后端 未结 13 764
时光说笑
时光说笑 2020-12-13 00:04

I\'m receiving image from a server, then based on a color chosen by the user, the image color will be changed.

I tried the following :

_sketchImageVi         


        
相关标签:
13条回答
  • 2020-12-13 00:57

    You can try:

     _sketchImageView.image = [self imageNamed:@"imageName" withColor:[UIColor blackColor]];
    
     - (UIImage *)imageNamed:(NSString *)name withColor:(UIColor *)color
     {
         // load the image
         //NSString *name = @"badge.png";
         UIImage *img = [UIImage imageNamed:name];
    
         // begin a new image context, to draw our colored image onto
         UIGraphicsBeginImageContext(img.size);
    
         // get a reference to that context we created
         CGContextRef context = UIGraphicsGetCurrentContext();
    
         // set the fill color
         [color setFill];
    
        // translate/flip the graphics context (for transforming from CG* coords to UI* coords
        CGContextTranslateCTM(context, 0, img.size.height);
        CGContextScaleCTM(context, 1.0, -1.0);
    
        // set the blend mode to color burn, and the original image
        CGContextSetBlendMode(context, kCGBlendModeColorBurn);
        CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height);
        CGContextDrawImage(context, rect, img.CGImage);
    
        // set a mask that matches the shape of the image, then draw (color burn) a colored rectangle
        CGContextClipToMask(context, rect, img.CGImage);
        CGContextAddRect(context, rect);
        CGContextDrawPath(context,kCGPathFill);
    
        // generate a new UIImage from the graphics context we drew onto
        UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        //return the color-burned image
        return coloredImg;
    }
    
    0 讨论(0)
提交回复
热议问题