叠加一个颜色一个UIImage?

我尝试添加的黑色覆盖了一些目前的UIImage的(这是白色)。 我一直在尝试使用下面的代码:

[[UIColor blackColor] set]; [image drawAtPoint:CGPointMake(0, 0) blendMode:kCGBlendModeOverlay alpha:1.0];

但它不工作,我敢肯定集不应该在那里。

--------------解决方案-------------

您将要裁剪的背景下,以图像遮罩,然后填写了坚实的颜色:

- (void)drawRect:(CGRect)rect
{
CGRect bounds = [self bounds];
[[UIColor blackColor] set];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToMask(context, bounds, [myImage CGImage]);
CGContextFillRect(context, bounds);
}

myImage应该是包含一个实例变量UIImage 我不知道它是否需要屏蔽的alpha通道或强度,以便尝试两个。

所以,总结一下所有问题的答案变成一个在这里这么完美的作品上都降入法iOS 6iOS 7各种图片和图标:

+ (UIImage *)filledImageFrom:(UIImage *)source withColor:(UIColor *)color{

// begin a new image context, to draw our colored image onto with the right scale
UIGraphicsBeginImageContextWithOptions(source.size, NO, [UIScreen mainScreen].scale);

// 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, source.size.height);
CGContextScaleCTM(context, 1.0, -1.0);

CGContextSetBlendMode(context, kCGBlendModeColorBurn);
CGRect rect = CGRectMake(0, 0, source.size.width, source.size.height);
CGContextDrawImage(context, rect, source.CGImage);

CGContextSetBlendMode(context, kCGBlendModeSourceIn);
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;
}

我只是写了一个教程,这将有助于这一点。 我的方法给你一个UIImage的副本,与你想要的颜色变化。 rpetrich的方法是伟大的,但需要你创建一个子类。 我的方法是代码只有几行,可以在任何你需要它们被丢弃。 http://coffeeshopped.com/2010/09/iphone-how-to-dynamically-color-a-uiimage

看此方法

+ (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size;
{
UIImage *img = nil;

CGRect rect = CGRectMake(0, 0, size.width, size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,
color.CGColor);
CGContextFillRect(context, rect);
img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
}

除了溶液rpetrich(这是伟大的方式 - 帮我寄望),你也可以用替换CGContextClipToMask行:

CGContextSetBlendMode(context, kCGBlendModeSourceIn); //this is the main bit!

这是SourceIn blendmode,做掩蔽无论是在GetCurrentContext颜色的工作。

由于iOS的7有一个更简单的解决方案:

UIImage* im = [UIImage imageNamed:@"blah"];
im = [im imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[[UIColor blackColor] setFill];
[im drawInRect:rect];

-set用于设置后续绘制操作不包括的blit的颜色。 我建议作为第一个电话,显示另一个(空) UIView在你UIImageView并设置其背景色:

myView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];

显然,你应该用你想要的白色和Alpha值。

分类:iphone 时间:2015-03-14 人气:0
本文关键词: iphone,UIImage的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.214 (s). 10 q(s)