我似乎在通过CALayers添加 mask 时遇到困难。我只是想掩盖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是黑色的,上面打了一个透明的圆圈(这是正确的 mask 方法吗?)。我不确定这是哪里失败的,也许是在
maskLayer.contents
上,因为它应该是CGImageRef
,但是当我将其设置为mask.CGImage
或通过局部变量CGImageRef = mask.CGImage
时,我会出错。无论如何,它现在设置的方式不会出错,所以我希望它很好。有谁知道发生了什么事,或如何使用CALayers正确设置蒙版?谢谢
最佳答案
尝试
maskLayer.contents = (id)mask.CGImage;
是的, Actor 阵容很糟糕,但这是必要的。
我想你也需要说
maskLayer.bounds = (CGRect){CGPointZero, mask.size};