2013-06-10 3 views
1

나는지도를 그리는 실험을 해왔습니다. 필자는 미국지도를 일련의 UIBezierPath (각 주마다 한 경로 - PaintCode를 사용하여 SVG 파일로 변환)로 그렸습니다. 동시에 나는 CAShapeLayer와 함께 일하고 있었고 얼마나 빨랐는지 놀랐다. UIBezierPath를 CAShapeLayer로 변환하기로 결정했습니다. 그것은 극도로 천천히 끝났다. 장치를 회전해도보기가 더러워집니다. 왜 그렇게 느린지 아는 사람이 있습니까? 너무 많은 CAShapeLayer가있는보기를 채울 때마다 응용 프로그램이 크게 느려지는 것 같습니다.UIBezierPath가 CAShapeLayer보다 빠릅니다.

이것은 특정 코드 문제가 아니며 응용 프로그램에서 사용할 수있는 CALayer의 양에 제한이 있는지 궁금합니다.

답변

1

CAShapeLayer은 주로 애니메이션을 만들 모양을 만드는 데 사용됩니다. 그래서 당신이 그것을 사용할 때 각각의 수정은 움직입니다. UIBezierPath도 모르지만 CAShapeLayer은 래스터 화 중에 앤티 엘리 어싱을 사용하기 때문에 값 비싼 작업 인 오프 스크린 렌더링이 필요합니다. 오프 스크린 렌더링

0

포함 shouldRasterize (光栅 化) 마스크 (遮罩) 그림자 (阴影) 에지 안티 앨리어싱 (抗锯齿) 그룹 불투명 (不透明) 그래서 당신은 불투명 & 그림자를 끄고 rasterise을 켜십시오 그것은 더 빨리 될 것입니다. 당신은 차이를 느낄 것입니다. 여전히 응용 프로그램을 느리게합니다.

관련 문제