图片置灰的两种方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_27633421/article/details/53256519

项目加一个活动页,有的活动过期之后还要展示几天,但是显示灰色,过了某个期限之后就不予展示了。这么一个需求。给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的背景色不会变灰,可以正常设置,而显示的图片是灰色的了,做个记录,以后要用到


展开阅读全文

没有更多推荐了,返回首页