2012-07-16 80 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