我需要根据图像(任何可能的形状)创建蒙版。我需要:
- 使用 CGPath 作为适当的掩码创建 CALayer
- 调用 [UIView.layer setMask: with layer above]
所以主要的大问题是如何设置基于黑白图像的CGPath?或者是否可以直接从图像中放置遮罩?
谢谢!
面具的示例图像:
我需要根据图像(任何可能的形状)创建蒙版。我需要:
所以主要的大问题是如何设置基于黑白图像的CGPath?或者是否可以直接从图像中放置遮罩?
谢谢!
面具的示例图像:
您将需要使用 Alpha 通道创建图像。根据CALayer
的掩码属性文档:
一个可选层,其 alpha 通道用作蒙版,以在层的背景和将层的内容与其过滤背景合成的结果之间进行选择。
因此,您要用作蒙版的图层需要一个 Alpha 通道。如果要使用图像创建这样的通道,则图像本身需要具有 alpha 通道。因此,您需要将上面发布的黑白蒙版复制到图像的 Alpha 通道中。该特定图像的颜色被忽略。然后加载图像,为其设置图层内容并将该图层用作不同的图层蒙版。周围的东西:
UIImage* imageWithAlphaChannel = [UIImage imageNamed:@"alpha.png"]; // Won't work with jpg
CGImageRef cgImageWithAlpha = [imageWithAlphaChannel CGImage];
CALayer* maskingLayer = [CALayer layer];
maskingLayer.contents = (id)cgImageWithAlpha;
//Assume viewToBeMasked is the view, who's layer needs to be masked
CALayer* layerToBeMasked = viewToBeMasked.layer;
layerToBeMasked.mask = maskingLayer;
maskingLayer.frame = layerToBeMasked.bounds;
//Alternativly use: viewToBeMasked.layer.mask = maskingLayer;
在浏览器中编码,请原谅系统错误。
将所有掩码存储为 png 文件可能会破坏您的应用程序大小。您可以将掩码存储为 jpg,并在运行时使用 CoreGraphics 绘图函数创建适当的 alpha 版本。但这是另一个问题......
我认为与我不久前做过的事情非常相似。基本上,您需要从 Adobe Illustrator 导出文件,然后运行例程将该文件转换为 CGPath。
你会在我对这个问题的回答中找到如何做到这一点: