2012-03-07 64 views
0

我基本上试图达到这个效果。它可以通过一个带有透明孔的PNG完成,然后堆叠在photo.jpg UIView的顶部。或者,我也看到了一种方法,您可以直接使用CGImageMaskCreate创建一个蒙版。我不想使用该功能,因为我希望用户能够与photo.jpg层交互(通过移动它,使其旋转等):创建一个没有直接图像处理的遮罩层?

enter image description here

其本质上是两个UIViews直接堆叠在彼此的顶部。

但是,如果不是使用蓝色,我想要使用另一种颜色,或者甚至用[UIColor colorPatternWithImage:]为遮罩层构图。我不想为每种情况制作一百万个不同的PNG。

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

回答

4

CALayer有一个属性mask,这是另一个CALayer定义要使用的掩码。您可以使用CAShapeLayer来定义蒙版,然后将其设置为呈现您的模糊图像/颜色/图案/任何其他图层的mask。您也可以使用常规的CALayer作为掩模,将半透明图像作为内容,这取决于您是否希望自定义孔的大小/形状。

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