如何屏蔽UIImageView?

如何屏蔽UIImageView?

我试图用这样的东西掩盖图像:

你能帮帮我吗?

我正在使用此代码:

- (void) viewDidLoad {
    UIImage *OrigImage = [UIImage imageNamed:@"dogs.png"];
    UIImage *mask = [UIImage imageNamed:@"mask.png"];
    UIImage *maskedImage = [self maskImage:OrigImage withMask:mask];
    myUIIMage.image = maskedImage;}


jeck猫
浏览 476回答 3
3回答

犯罪嫌疑人X

有一种更简单的方法。#import&nbsp;<QuartzCore/QuartzCore.h>//&nbsp;remember&nbsp;to&nbsp;include&nbsp;Framework&nbsp;as&nbsp;wellCALayer&nbsp;*mask&nbsp;=&nbsp;[CALayer&nbsp;layer];mask.contents&nbsp;=&nbsp;(id)[[UIImage&nbsp;imageNamed:@"mask.png"]&nbsp;CGImage];mask.frame&nbsp;=&nbsp;CGRectMake(0,&nbsp;0,&nbsp;<img_width>,&nbsp;<img_height>);yourImageView.layer.mask&nbsp;=&nbsp;mask;yourImageView.layer.masksToBounds&nbsp;=&nbsp;YES;对于Swift 4和plus,请遵循以下代码let&nbsp;mask&nbsp;=&nbsp;CALayer()mask.contents&nbsp;=&nbsp;&nbsp;[&nbsp;UIImage(named:&nbsp;"right_challenge_bg")?.cgImage]&nbsp;as&nbsp;Anymask.frame&nbsp;=&nbsp;CGRect(x:&nbsp;0,&nbsp;y:&nbsp;0,&nbsp;width:&nbsp;leftBGImage.frame.size.width,&nbsp;height:&nbsp;leftBGImage.frame.size.height)leftBGImage.layer.mask&nbsp;=&nbsp;mask leftBGImage.layer.masksToBounds&nbsp;=&nbsp;true

慕妹3242003

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

相关分类

iOS