2012-06-25 77 views
0

我有一個UIScrollView與CAShapeLayer子層,呈現一個簡單的線。 CAShapeLayer子圖層有它自己的子CAShapeLayer。這會導致滾動和縮放速度變慢。層次結構是這樣的:CAShapeLayer與CAShapeLayer子層慢

-UIScrollViewLayer -CAShapeLayer -CAShapeLayer

如果我改變了層級,所以它只有一個層次深,我沒有性能問題:

-UIScrollViewLayer -CAShapeLayer -CAShapeLayer

我在做什麼錯?

+0

你能解釋一下你的問題嗎?使用嵌套圖層可能會阻止這些圖層被緩存。這可能是你的問題。如需更多幫助,我需要更好地瞭解您的問題。 –

回答

2

Cemel,

所以我的滾動視圖控制器目前正在做這樣的:

[self.uiview.layer addSublayer:myCALayer]; 

myCaLayer也做到這一點在其init方法:

CAShapeLayer *overlayLayer = [[CAShapeLayer alloc] init]; 
[self addSublayer:overlayLayer] 

我發現這個層次是某些原因緩慢。如果我改爲扁平化層次結構,並在我的uiscrollview控制器中執行此操作,請改爲:

[self.uiview.layer addSublayer:myCALayer]; 
CAShapeLayer *overlayLayer = [[CAShapeLayer alloc] init]; 
[self.uiview.layer addSublayer:overlayLayer] 

然後性能好得多。希望更有意義。

+0

另外一件事是我在shapelayers上設置路徑屬性,我只是爲了簡單而沒有在上面顯示。 – Imran

+0

嗯,所以我試圖設置layer.ShouldRasterize,因爲我認爲它會提高性能,但當我看着儀器,它看起來像它重繪每次scrollview滾動。不知道我是否理解了正確的行爲,或者如果我做錯了什麼。 – Imran