我似乎很难通过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
时,或者通过局部变量{{}时会出现错误1}}。无论如何,它现在设置的方式不会出错,所以我希望它没问题。
有谁知道发生了什么,或者如何使用CALayers正确设置面具?感谢
答案 0 :(得分:19)
尝试
maskLayer.contents = (id)mask.CGImage;
是的,演员很糟糕,但这是必要的。
我想你还需要说
maskLayer.bounds = (CGRect){CGPointZero, mask.size};
答案 1 :(得分:13)
试试这个:
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];
您还需要设置遮罩框架