图片置灰的两种方法

项目加一个活动页,有的活动过期之后还要展示几天,但是显示灰色,过了某个期限之后就不予展示了。这么一个需求。给imageview加灰色图片的方法我网上查了一下用的这个:


-(UIImage *)grayImage:(UIImage *)sourceImage

{

    int bitmapInfo = kCGImageAlphaNone;

    int width = sourceImage.size.width;

    int height = sourceImage.size.height;

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();

    CGContextRef context = CGBitmapContextCreate (nil, width,height,8,0,colorSpace, bitmapInfo);

    CGColorSpaceRelease(colorSpace);

    if (context == NULL) {

        return nil;

    }

    CGContextDrawImage(context,

                       CGRectMake(0, 0, width, height), sourceImage.CGImage);

    UIImage *grayImage = [UIImage imageWithCGImage: CGBitmapContextCreateImage(context)];

    CGContextRelease(context);

    return grayImage;

}



能达到效果,后来又来一个需求,做一个收藏列表,tableview的自定义cell内写了一个button,收藏的时候给一个心形效果,取消收藏的时候是半破碎的心形,置灰色,我用了上面的方法时,发现整个imageview的背景色也被置灰了 调了半天没调好,这时候发现了另一种方法,image的渲染方法,是这么使用的


-(void) updateUIForFollow:(BOOL) isFollow{

    if (isFollow) {

        self.belowImv.image = [UIImage imageNamed:@"new_room_half_btn_heard"];

    }else{

        UIImage *heartImage = [UIImageimageNamed:@"new_room_half_btn_broken_heard"];

        UIImage * newHeartImage = [heartImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

        [self.belowImv setImage:newHeartImage];

        self.belowImv.tintColor = COLOR_LIGHT_GRAY;

    }

}


imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];这个方法,是给当前的image做一个渲染效果,后面的参数是一个枚举,这个template代表始终使用前景色tintcolor来渲染,接着设置tintcolor就可以了,这样 imageview的背景色不会变灰,可以正常设置,而显示的图片是灰色的了,做个记录,以后要用到


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值