UIImage 混合给定的颜色

来源:互联网 发布:js appendchild html 编辑:程序博客网 时间:2024/06/05 05:30

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

{

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

return [selfimageTintedWithColor:colorfraction: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 ([[[UIDevicecurrentDevice] systemVersion]floatValue] >= 4.0) {

UIGraphicsBeginImageContextWithOptions([selfsize], 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 = [selfsize];

// Composite tint color at its own opacity.

[colorset];

UIRectFill(rect);

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

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

[selfdrawInRect:rect blendMode:kCGBlendModeDestinationInalpha: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.

[selfdrawInRect:rect blendMode:kCGBlendModeSourceAtopalpha:fraction];

}

image =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

returnself;

}


原创粉丝点击