我似乎在通过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};

10-08 09:11