来自图像的CGPath

时间:2011-12-08 16:00:32

标签: cocoa-touch uiview calayer mask cgpath

我需要根据图像(任何可能的形状)创建蒙版。我需要:

  1. 使用CGPath创建CALayer作为正确的掩码
  2. 调用[UIView.layer setMask:with layer above]
  3. 所以主要的问题是如何基于黑白图像设置CGPath?或者是否可以从图像中直接放置 面具

    谢谢!


    面具的示例图片: example mask

2 个答案:

答案 0 :(得分:6)

您需要使用Alpha通道创建图像。根据{{​​1}}的掩码属性文档:

  

一个可选图层,其Alpha通道用作要选择的蒙版   在图层的背景和合成的结果之间   图层内容及其过滤后的背景。

因此,您要用作遮罩的图层需要Alpha通道。如果要使用图像创建此类通道,则图像本身需要具有Alpha通道。因此,您需要将上面发布的黑白面具复制到图像的Alpha通道中。该特定图像的颜色将被忽略。然后加载图像,为其设置图层内容,并将该图层用作不同的图层蒙版。这件事:

CALayer

在浏览器中编码,原谅systactical错误。

将所有面具存储为png文件可能会影响您的应用尺寸。您可以将掩码存储为jpgs,并使用CoreGraphics绘图函数在运行时创建相应的alpha版本。但这是另一个问题......

答案 1 :(得分:3)

非常类似的问题我认为我做了一段时间的事情。基本上,您需要从Adobe Illustrator导出文件,然后运行例程将该文件转换为CGPath。

你会在我对这个问题的回答中找到怎么做:

How to detect/handle touch events on curved regions?