2012-02-02 5 views
9

내 앱을 최적화하려고합니다. 꽤 시각적으로 풍부하기 때문에 큰 이미지와 블렌딩 등이 포함 된 꽤 많은 UIView가 있습니다.레이어의 변환 전후에 CALayer 래스터 화에 대해 래스터 화를 수행해야합니까?

CALayersshouldRasterize 속성을 실험 해 보았습니다. 하나의 경우 특히, 나는 테이블을 포함하여 많은 하위 뷰로 구성된 UIView을 가지고있다. 전체 화면이 스크롤되는 전환의 일부로이 UIView도 크기 조절 및 회전 (변환 사용)입니다.

UIView의 내용은 정적으로 유지되므로 view.layer.shouldRasterize = YES을 설정하는 것이 좋습니다. 그러나 성능이 향상되지 않았습니다. 새로운 크기와 회전으로 모든 프레임을 다시 래스터화할 수 있습니까? 나는 정체 변환 행렬을 가지고있을 때 래스터 화 (rasterize)하기를 원했고, 변환 과정에서 축척되고 회전 할 때 캐쉬 (cache)를 캐쉬 했습니까?

그렇지 않은 경우 강제로 발생시킬 수있는 방법이 있습니까? 크기 조정 및 래스터 화 된 내용을 회전하는 여분의 슈퍼 뷰/레이어를 추가하지 않아도됩니다.

답변

8

CoreAnimation instrument을 사용하여 응용 프로그램을 프로파일 링하여 질문에 답변 할 수 있습니다. 이 장치는 장치에서만 사용할 수 있습니다.

"색상이 녹색으로, 빨강 색으로 표시됩니다"를 활성화 할 수 있습니다. 레이어가 빨간색으로 유지되면 실제로 프레임마다 래스터 화됩니다.

+0

무엇이 빨간색으로 변할까요? GPU 메모리가 부족합니까? – jjxtra

+0

그 중 하나 또는 레이어가 다시 렌더링되어 캐시가 무효화됩니다. – NachoSoto