用两个CALayers绘制在彼此之上

时间:2012-07-16 02:19:41

标签: ios cocoa-touch core-graphics calayer

我有2个视图,我想使用各自的图层进行绘制。我的第一个观点,我称之为TextView,只不过是一个充满文字的页面。我将称之为DrawView的另一个视图是绘图发生的地方。在TextView中,图层用于将PDF文本绘制到视图中。例如:

View showing contents of PDF

另一方面,DrawView的图层是制作自定义图形的地方。 (例如自由形式的图纸,矩形等)

现在我想要发生的事情是让DrawView中的绘图看起来好像是在 TextView下绘制的。像这样:

Highlighted text

我所做的是将DrawView添加为TextView的子视图。但这就是发生的事情:

text covered with color

我尝试使用kCGBlendModeMultiply,就像第二张图片中使用的那样,但没有任何反应。任何人都可以告诉我如何使这项工作?感谢。

注意:第二张图片达到我想要的唯一原因是因为我将矩形插入同一层,即TextView的图层。我想做同样的效果,但在DrawView层内,这是TextView的子视图。

1 个答案:

答案 0 :(得分:1)

只是一个想法:

您可以使用3个图层,而不是2个。突出显示的区域可以位于第1层(背面图层)。文本文档可以位于第2层(中间),而绘图层可以位于第3层(前层)。

将第3层的不透明度设置为某个中间值,这样您仍然可以看到第2层上的内容。

当用户绘制时,让第3层成为实际接受绘图的视图。由于它是半透明的,您仍然可以看到中间层。调用touchesEnded时,将绘图复制到第1层,它可以保留在第1层。从第3层删除它,你应该完成你想要的。

这是你在想什么?