2012-05-31 29 views
1

我有一個CATiledLayer設置爲動態地重新繪製一些我用Quartz創建的圖形。CATiledLayer和UIScrollView,緩存一些縮放級別的舊數據

此視圖是作爲滾動視圖的內容視圖添加的,當我滾動和縮放圖形時,會以正確的分辨率重新繪製圖像,並且完全按照我的預期進行。

我的問題是,如果我更改生成圖形的值(它是像結構的圖形的可視化),然後在視圖上設置NeedNeedsDisplay,則會應用更改並在某些縮放級別顯示,但如果您縮小它將顯示生成的舊圖形。再次放大可以返回到正確的圖形。

我假設平鋪圖層中的不同縮放級別正在緩存,因此更新未應用於已經緩存的縮放級別。

我的問題是,如果是這種情況,有什麼辦法強制CATiledLayer不是從緩存的數據重繪?如果沒有,是否有人知道可能導致問題的原因是什麼?

回答

0

不知道你是否仍然有這個問題,但我最近碰到它自己。這似乎是從Clear CATiledLayers Cache When Changing Images相同的問題答案似乎是將layer.content設置爲零,然後使用setNeedsDisplay或setNeedsDisplayInRect調用刷新:.所以,無論你會叫setNeedsDisplay想它清除你會改用後刷新視圖:

layer.content = nil; 
[layer setNeedsDisplay]; 

這似乎對我來說,雖然在上述連接問題的答案有反對直接警告的評論工作設置layer.content屬性。除了可能刪除和重新添加圖層,雖然我還沒有能夠拿出任何其他選項。

+0

感謝您的提示,我現在不再使用CATiledLayer了,但對於未來的項目很瞭解。我會嘗試一下 :)。 –