创建一个没有直接图像处理的遮罩层?

时间:2012-03-07 01:55:42

标签: iphone ios xcode ipad

我基本上试图达到这个效果。它可以用几乎所有的PNG完成,透明孔穿过它,然后堆叠在photo.jpg UIView的顶部。或者,我也看到了一种方法,你可以用CGImageMaskCreate直接创建一个掩码。我不想使用该功能,因为我希望用户能够与photo.jpg图层进行交互(通过移动,旋转等):

enter image description here

它基本上是两个UIView直接堆叠在一起。

然而,如果不是使用蓝色,我想使用另一种颜色,甚至用[UIColor colorPatternWithImage:]模式化图像作为遮蔽层?我不想为每个案例制作一百万个不同的PNG。

我是否需要某种方式以编程方式重新创建我的面具?有没有办法将我的蒙版形状转换为代码?任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:4)

CALayer有一个名为mask的属性,它是定义要使用的掩码的另一个CALayer。您可以使用CAShapeLayer来定义蒙版,然后将其设置为另一个层的mask,以渲染您的模糊图像/颜色/图案/等等。您还可以使用常规CALayer作为遮罩,并将半透明图像作为内容,这取决于您是否希望能够自定义孔的大小/形状。

注意事项:CAShapeLayer比普通图层慢,mask也比非屏蔽慢。您可能需要确保性能可以接受。您可能还想尝试shouldRasterize标志,但这只会提高性能(以内存为代价),只要图层是静态的(即不是动画)。