用CALayers添加掩码

我似乎有困难通过CALayers添加面具。 我只是想掩盖一个UIImageView。 这是我的代码:

CALayer *maskLayer = [CALayer layer]; UIImage *mask = [UIImage imageNamed:@"mask.png"]; maskLayer.contents = mask; UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; viewToMask.image = [UIImage imageNamed:@"picture.png"]; viewToMask.layer.mask = maskLayer; [self.view addSubview:viewToMask]; 

Mask.png是黑色的,穿透它的是一个透明的圆圈(这是掩盖的正确方法?)。 我不知道这是失败的,也许在maskLayer.contents因为它应该是一个CGImageRef但我得到错误,当我把它设置为mask.CGImage ,或通过本地variablesCGImageRef = mask.CGImage 。 无论如何,它现在的方式不会给出错误,所以我希望它的罚款。

有谁知道发生了什么,或者如何正确设置CALayers的面具? 谢谢

尝试

 maskLayer.contents = (id)mask.CGImage; 

是的,演员吮吸,但这是必要的。


我想你还需要说

 maskLayer.bounds = (CGRect){CGPointZero, mask.size}; 

尝试这个:

 CALayer *maskLayer = [CALayer layer]; UIImage *mask = [UIImage imageNamed:@"mask.png"]; maskLayer.contents = (id)mask.CGImage; // maskLayer.contentsGravity = kCAGravityCenter; maskLayer.frame = CGRectMake(0.0, 0.0,1024,768); UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; viewToMask.image = [UIImage imageNamed:@"picture.png"]; viewToMask.layer.mask = maskLayer; [self.view addSubview:viewToMask]; 

您还需要设置遮罩框架