2012-07-16 72 views
1

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

View showing contents of PDF

的drawView函数的另一方面层是定义绘制正在取得其中。 (例如自由图纸,矩形等)

现在我希望发生是有在DrawView图中看起来好像他们正在绘制TextView下。就像这样:

Highlighted text

我所做的就是drawView函数添加为TextView中的子视图。但是,这是发生了什么事:

text covered with color

我尝试使用kCGBlendModeMultiply像什么是第二图像中使用,但没有任何反应。任何人都可以告诉如何使这项工作?谢谢。

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

回答

1

只是一个想法:

可以使用3层,而不是2的高亮区域可以是在层1(背面层)。文本文档可以在第2层(中间)上,而绘图层可以在第3层(前一层)上。

3层的不透明度设置为一些中间值,这样你仍然可以看到什么是在二层

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

这是你在想什么?

+0

是的,这就是我的想法。我会尝试你的建议,看看它是否会起作用。谢谢! – 2012-07-16 03:37:54

+0

太棒了!不知道这会造成什么样的表现。如果你是在iPad上做的,复制整个视图可能会非常昂贵。如果您有内存问题,您可以尝试禁用不透明度,因为这有很大帮助。 – bkbeachlabs 2012-07-16 03:43:01

+0

对不起,但我如何将CALayer设置为透明?我只做了这个:'self.layer.backgroundColor = [UIColor clearColor] .CGColor;'。那是对的吗? – 2012-07-16 03:43:15