为了账号安全,请及时绑定邮箱和手机立即绑定

如何屏蔽UIImageView?

如何屏蔽UIImageView?

iOS
jeck猫 2019-08-09 16:04:25
如何屏蔽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;}
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

有一种更简单的方法。

#import <QuartzCore/QuartzCore.h>// remember to include Framework as wellCALayer *mask = [CALayer layer];mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage];mask.frame = CGRectMake(0, 0, <img_width>, <img_height>);yourImageView.layer.mask = mask;yourImageView.layer.masksToBounds = YES;

对于Swift 4和plus,请遵循以下代码

let mask = CALayer()mask.contents =  [ UIImage(named: "right_challenge_bg")?.cgImage] as Anymask.frame = CGRect(x: 0, y: 0, width: leftBGImage.frame.size.width, height: leftBGImage.frame.size.height)leftBGImage.layer.mask = mask
leftBGImage.layer.masksToBounds = true


查看完整回答
反对 回复 2019-08-09
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

本教程使用此方法有两个参数: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"];

该方法将返回您的蒙版图像,因此您必须在某个地方调用此方法。你能告诉我们你调用方法的代码吗?


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 475 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信