2011-12-07 102 views
0

我有一個將PDF渲染到CATiledLayer的視圖。這很好。CATiledLayer陰影渲染不正確

現在我試圖陰影添加到視圖,所以我做了平常:

tiledLayer.masksToBounds = NO; 
    tiledLayer.shadowOffset = CGSizeMake(5, 5); 
    tiledLayer.shadowRadius = 5; 
    tiledLayer.shadowOpacity = 0.5; 
    tiledLayer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; 

但是我所看到的渲染不正確。看起來正在發生的事情是,當瓷磚被繪製時,爲每個瓷磚繪製陰影。一旦所有瓷磚都被繪製出來,最終產品看起來是正確的,並且在正確的位置有一個陰影,但是中間渲染會讓人分心。

如何在CATiledLayer上使用陰影?

回答

1

您應該將您的CATiledLayer封裝到容器圖層中,並將這些影子屬性應用於它。通過調用self.bounds來判斷,您可能已經將CATiledLayer嵌入到視圖的圖層中,在這種情況下(除非需要masksToBounds),則可以直接將陰影屬性應用於該圖層。

-1

爲每個圖塊繪製陰影是非常合理的,這正是您要求它執行的操作。我假設你已經在包含它們的某種父視圖中加載了你的圖塊(通常是一個UIScrollView)。您應該在包含視圖的位置設置陰影。

+0

您使用過CATiledLayer嗎?它不代表一個瓦片 - 它將其內容*繪製爲瓦片。 –

+0

我有,我用它們在應用程序中進行PDF渲染。從這個應用到每個瓷磚的影子的聲音看起來不正確,我可能不完全清楚,但是我從OP的文章中瞭解到,他看到每個瓷磚創建時呈現的投影。但他真正想要的是他的整個平鋪區域都有陰影,我會想象將陰影應用於包含視圖的圖層會產生這些影響。你發佈的答案聽起來像一個非常相似的方法。我錯過了什麼? –

+0

也許我誤解了「你告訴它要做的事情」。當他給它一個包含視圖邊界的陰影路徑時,描述的行爲如何有意義? –