2009-11-20 82 views
0

我剛剛開始編寫一些核心動畫代碼,並且我剛剛花了一個令人沮喪的一天試圖找出一個特定的問題。CALayer過濾器和界限

我有兩個層支持的觀點,即一起構成一個嚮導/助理類型用戶界面:

1),其與一個邊緣到邊緣的梯度和一個不錯的圖像充滿整個窗口的自定義的背景圖在左側 2)右側較小的框架視圖,當您點擊「向前」/「向後」按鈕時,您可以用作更改對話框選項的主頁:標籤,控件,按鈕等。

I 've'偷走了一些示例代碼,這些代碼激活了照明濾波器並因此產生脈動效應。

我已將動畫和過濾器添加到自定義背景視圖的CALayer。它工作正常,但在較小的框架視圖中的控件也搏動!

我茫然地明白怎麼可以如此,我期望通過控制應用到它下面的層過濾器不受影響。當然,與較小視圖相關聯的CALayer應該在背景視圖圖層的頂層上合成,並且其層上的所有內容都應該保持不受影響!?

我玩過各種場景,很明顯我錯過了一些非常基本的東西......請幫忙!

回答

1

CALayer的內容過濾器會影響圖層及其子圖層。從你的問題來看,這聽起來像是右側的視圖是你的背景視圖的子視圖,它有效地使其圖層成爲背景圖層的子圖層,並且過濾器也將應用於它。

取決於正是你正在嘗試做的,你可能有一個背景過濾器,而不是內容過濾器更好的運氣。如果我正確理解您的設置,您應該能夠在右側視圖上設置背景過濾器,而不是在背景視圖上設置內容過濾器。

+0

是的,在過去的幾個小時裏我一直在反覆思考這個問題,然後有一個「aha」時刻。我曾假設過濾器不會被「繼承」到樹上,但顯然並非如此。儘管我當時不明白爲什麼這與在父視圖上設置內容過濾器有什麼不同,但我嘗試過後臺過濾器路由。當然是因爲「繼承」。不幸的是,如果我設置了背景過濾器而不是內容過濾器,我的動畫代碼片段似乎不工作,所以我放棄了這一點,可能有點早了。我會再去一次。 – Frank 2009-11-20 22:44:49