我正在尝试这样做:我有一个带有图像的 imageView,我添加了另一个具有浅色文本颜色背景的相同尺寸的图像视图。我需要清除/擦除上面图像的部分以擦除。这样从那部分开始,下面的图像就会很清楚。我附加的图像 当我在屏幕上移动触摸时,该部分应该是清晰的。请提供任何帮助
问问题
995 次
1 回答
0
创建一个 Scratch-view 类并将您的 Scratchtransparent
图像放在initMethod
如下位置:-
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
scratchable = [UIImage imageNamed:@"scratchable.jpg"].CGImage;
width = CGImageGetWidth(scratchable);
height = CGImageGetHeight(scratchable);
self.opaque = NO;
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
CFMutableDataRef pixels = CFDataCreateMutable( NULL , width * height );
alphaPixels = CGBitmapContextCreate( CFDataGetMutableBytePtr( pixels ) , width , height , 8 , width , colorspace , kCGImageAlphaNone );
provider = CGDataProviderCreateWithCFData(pixels);
CGContextSetFillColorWithColor(alphaPixels, [UIColor blackColor].CGColor);
CGContextFillRect(alphaPixels, frame);
CGContextSetStrokeColorWithColor(alphaPixels, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(alphaPixels, 20.0);
CGContextSetLineCap(alphaPixels, kCGLineCapRound);
CGImageRef mask = CGImageMaskCreate(width, height, 8, 8, width, provider, nil, NO);
scratched = CGImageCreateWithMask(scratchable, mask);
CGImageRelease(mask);
CGColorSpaceRelease(colorspace);
}
return self;
}
并在 Scratch 之后创建第二个视图类以显示背景图像
下面这个例子对你尝试这个非常有用: -
于 2013-08-29T07:52:21.767 回答