UIImage 混合给定的颜色

- (UIImage *)imageTintedWithColor:(UIColor *)color

{

// This method is designed for use with template images, i.e. solid-coloured mask-like images.

return [self imageTintedWithColor:color fraction:0.0]; // default to a fully tinted mask of the image.

}



- (UIImage *)imageTintedWithColor:(UIColor *)color fraction:(CGFloat)fraction

{

if (color) {

// Construct new image the same size as this one.

UIImage *image;

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {

UIGraphicsBeginImageContextWithOptions([self size], NO, 0.0); // 0.0 for scale means "scale for device's main screen".

}

#else

if ([[[UIDevice currentDevice] systemVersion] floatValue] < 4.0) {

UIGraphicsBeginImageContext([self size]);

}

#endif

CGRect rect = CGRectZero;

rect.size = [self size];

// Composite tint color at its own opacity.

[color set];

UIRectFill(rect);

// Mask tint color-swatch to this image's opaque mask.

// We want behaviour like NSCompositeDestinationIn on Mac OS X.

[self drawInRect:rect blendMode:kCGBlendModeDestinationIn alpha:1.0];

// Finally, composite this image over the tinted mask at desired opacity.

if (fraction > 0.0) {

// We want behaviour like NSCompositeSourceOver on Mac OS X.

[self drawInRect:rect blendMode:kCGBlendModeSourceAtop alpha:fraction];

}

image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

return self;

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值