2012-06-25 5 views
0

간단한 선을 렌더링하는 CAShapeLayer 하위 레이어가있는 UIScrollView가 있습니다. CAShapeLayer 하위 계층에는 자체 하위 CAShapeLayer가 있습니다. 이로 인해 스크롤 및 확대/축소가 느려집니다. 계층 구조는 다음과 같이이다 :CAShapeLayer CASHapeLayer 하위 레이어가 느림

-UIScrollViewLayer -CAShapeLayer -CAShapeLayer

그것은 단지 하나 개의 수준이되도록 나는이 계층 구조 변경하면 깊은 나는 성능 문제가없는 :

-UIScrollViewLayer 을 -CAShapeLayer -CAShapeLayer

내가 뭘 잘못하고 있니? 내가 수 있도록이 계층 구조를 발견했다

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

:

[self.uiview.layer addSublayer:myCALayer]; 

myCaLayer는 init 메소드에서이 작업을 수행합니다

그래서 내 스크롤 뷰 컨트롤러는 현재이를하고있다

+0

조금 더 질문 할 수 있습니까? 중첩 된 레이어를 사용하면 해당 레이어가 캐시되지 않을 수 있습니다. 그게 당신 문제 일 수 있어요. 도움이 더 필요하면 문제를 더 잘 이해할 필요가 있습니다. –

답변

2

Cemel, 어떤 이유로 천천히. 대신 계층 구조를 평면화하고 대신 내 uiscrollview 컨트롤러에서 수행하십시오.

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

성능이 훨씬 좋습니다. 희망은 더 이해가됩니다.

+0

또 하나의 사실은 shapelayers에 대한 경로 속성을 설정하는 것입니다. – Imran

+0

흠. 그래서 나는 성능을 향상시킬 줄 알았는데 layer.ShouldRasterize 설정을 시도했지만 계기를 보면 스크롤 볼 때마다 다시 그려지는 것처럼 보입니다. 내가 제대로 행동을 이해했는지 또는 내가 잘못한 것을 알았는지 확실하지 않습니다. – Imran

관련 문제