【问题标题】:Adding a mask with CALayers使用 CALayers 添加蒙版
【发布时间】:2012-03-24 15:02:31
【问题描述】:

我似乎很难通过 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 或通过局部变量CGImageRef = mask.CGImage 时出现错误。无论如何,它现在的设置方式不会出错,所以我希望它没问题。

有谁知道发生了什么,或者如何使用 CALayers 正确设置遮罩?谢谢

【问题讨论】:

    标签: iphone ios xcode quartz-graphics


    【解决方案1】:

    试试

    maskLayer.contents = (id)mask.CGImage;
    

    是的,演员阵容很烂,但这是必要的。


    我想你也需要说

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

    【讨论】:

    • 嘿,感谢您对原始问题的帮助,我正在尝试遵循您的建议。无论如何,这似乎也不起作用。我没有看到任何面具或我的 viewToMask。
    • @user339946:您可能需要定义maskLayerbounds
    • 框架对我来说也很好用。喜欢只需很少的代码即可应用面具……太棒了。谢谢大家。
    【解决方案2】:

    试试这个:

    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];
    

    还需要设置遮罩框

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 2021-10-03
      相关资源
      最近更新 更多