【发布时间】:2012-03-17 05:54:02
【问题描述】:
我想在我的应用程序中重复使用一组图形。它们是具有透明度的按钮和图像。与其拥有几十个硬编码的按钮图像,我更愿意拥有一个按钮图像,并且能够动态地为其分配颜色,例如导航栏和它的色调颜色。
是否可以替换/改变 UIView 的色调?
或者: 我知道如果我将透明图像覆盖在另一个 UIView 上,那么我可以更改背景颜色,这两个图像将融合在一起。但是透明区域会呈现背景的色调。
有没有办法在将两个图像混合在一起时保持透明区域透明?我听说有剪贴蒙版,但从未使用过它们。
谢谢!
更新:
这应该可以,但返回 nil 图像,我看到其他人报告了同样的问题。也许这将在未来起作用
-(void)doHueAdjustFilter
{
//does not work, returns nil image
CIImage* inputImage = [CIImage imageWithCGImage:[[UIImage imageNamed:@"button.jpg"]CGImage]];
CIFilter *myFilter;
NSDictionary *myFilterAttributes;
myFilter = [CIFilter filterWithName:@"CIHueAdjust"];
[myFilter setDefaults];
myFilterAttributes = [myFilter attributes];
[myFilterAttributes setValue:inputImage forKey:@"inputImage"];
[myFilterAttributes setValue:[NSNumber numberWithFloat:0.9] forKey:@"inputAngle"];
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *ciimage = [myFilter outputImage];
CGImageRef cgimg = [context createCGImage:ciimage fromRect:[ciimage extent]];
UIImage *uimage = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp];
[caduceusImageView setImage:uimage];
CGImageRelease(cgimg);
}
【问题讨论】:
标签: iphone objective-c uiview core-graphics