慕妹3242003
本教程使用此方法有两个参数:image并且maskImage,您必须在调用方法时进行设置。示例调用可能看起来像这样,假设方法在同一个类中并且图片在您的包中:注意 - 令人惊讶的是,图像甚至不必具有相同的大小。...UIImage *image = [UIImage imageNamed:@"dogs.png"];UIImage *mask = [UIImage imageNamed:@"mask.png"];// result of the masking methodUIImage *maskedImage = [self maskImage:image withMask:mask];...- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
// returns new image with mask applied
return maskedImage;}在您提供代码后,我添加了一些数字作为注释,以供参考。你还有两个选择。整个事情是一种方法,你在某处调用。您不需要在其中创建图像:这会将方法的可重用性降低到零。让代码正常工作 将方法头(1.)更改为- (UIImage *)maskImageMyImages {然后,在改变变量名2至UIImage *maskImage = [UIImage imageNamed:@"mask.png"];该方法将返回您的蒙版图像,因此您必须在某个地方调用此方法。你能告诉我们你调用方法的代码吗?