iOS SDK - 图像屏蔽

art*_*dev 5 xcode objective-c ios ios7

如何用非透明像素用另一个图像掩盖图像?例如

在此输入图像描述

当蒙版图像为黑白时,我使用此功能:

- (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 masked = CGImageCreateWithMask([image CGImage], mask);
    return [UIImage imageWithCGImage:masked];
}
Run Code Online (Sandbox Code Playgroud)

但在我的情况下如何做到这一点?

l0g*_*g3r 5

以下是实现结果的步骤

1)创建一个图像视图,并为其计算最佳大小(+ set aspectFit选项)

2)获取图像视图框,并使用该选项创建蒙版(即缩放预定义的蒙版图像)

3)使用您创建的蒙版遮罩图像视图

    UIImageView *maskView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"star_mask_alpha.png"]];
    self.needsMaskImageView.layer.mask = maskView.layer;
    [self.needsMaskImageView setNeedsDisplay];