我花了最后几天试图找到一种方法,但我被困住了。在我的应用程序的某个点上,我想要两个 UIImage 重叠,当我开始在第一层上“绘制”时,它会擦除图像并让我们看透,以便能够显示下面的内容。
我不知道我在核心图形方面的方式,在网上呆了几天后,我想知道这是否可能。
有没有人可以帮助我,或者指出我应该遵循的方向?
任何帮助将不胜感激。
祝你今天过得愉快。
我花了最后几天试图找到一种方法,但我被困住了。在我的应用程序的某个点上,我想要两个 UIImage 重叠,当我开始在第一层上“绘制”时,它会擦除图像并让我们看透,以便能够显示下面的内容。
我不知道我在核心图形方面的方式,在网上呆了几天后,我想知道这是否可能。
有没有人可以帮助我,或者指出我应该遵循的方向?
任何帮助将不胜感激。
祝你今天过得愉快。
创建一个 ScratchView 类并将您的 Scratch 图像放入 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 之后创建第二个视图类以显示背景图像
下面这个例子对你尝试这个非常有用: -