用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];
您还需要设置遮罩框架