我有一张看起来像这样的图片......
我必须要实现的是我必须更改此图像下半部分的颜色。 像这个..
我已尝试使用CAGradientLayer
,Masking
,但没有运气得到结果..
任何帮助都会很棒..提前致谢..
更新1
这是他们在这段代码之后得到的东西。我需要补充的一件事是在使用之前调整图像大小。
更新2
答案 0 :(得分:7)
你对我提出了一些很好的挑战,但是你走了:
返回带有一些颜色的下半部分图像的方法
- (UIImage *)image:(UIImage *)image withBottomHalfOverlayColor:(UIColor *)color
{
CGRect rect = CGRectMake(0.f, 0.f, image.size.width, image.size.height);
if (UIGraphicsBeginImageContextWithOptions) {
CGFloat imageScale = 1.f;
if ([self respondsToSelector:@selector(scale)])
imageScale = image.scale;
UIGraphicsBeginImageContextWithOptions(image.size, NO, imageScale);
}
else {
UIGraphicsBeginImageContext(image.size);
}
[image drawInRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(context, kCGBlendModeSourceIn);
CGContextSetFillColorWithColor(context, color.CGColor);
CGRect rectToFill = CGRectMake(0.f, image.size.height*0.5f, image.size.width, image.size.height*0.5f);
CGContextFillRect(context, rectToFill);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
使用示例:
UIImage *image = [UIImage imageNamed:@"q.png"];
image = [self image:image withBottomHalfOverlayColor:[UIColor cyanColor]];
self.imageView.image = image;
我的结果:
答案 1 :(得分:2)
在Swift 2.3中
func withBottomHalfOverlayColor(myImage: UIImage, color: UIColor) -> UIImage
{
let rect = CGRect(x: 0, y: 0, width: myImage.size.width, height: myImage.size.height)
UIGraphicsBeginImageContextWithOptions(myImage.size, false, myImage.scale)
myImage.drawInRect(rect)
let context = UIGraphicsGetCurrentContext()!
CGContextSetBlendMode(context, CGBlendMode.SourceIn)
CGContextSetFillColorWithColor(context, color.CGColor)
let rectToFill = CGRect(x: 0, y: myImage.size.height*0.5, width: myImage.size.width, height: myImage.size.height*0.5)
CGContextFillRect(context, rectToFill)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
答案 2 :(得分:0)
你可以使用一些技巧: