2010-04-10 1 views
0

사람들이 그게 좋다고했기 때문에 -drawRect :에서 모든 내용을 칠하는 멋진 UIView 하위 클래스를 만들었습니다. 그 견해는 다른 견해의 하위 견해입니다. 이 또 다른 견해는 Core Animation으로 움직이는 애니메이션입니다. 축소, 회전, 이동합니다. 그러나, 나는 이것을 경험했다. -drawRect는 애니메이션 중에 수조 번 호출되는 것처럼 보이고 성능은 엉망이다.Core Animation은 모든 단일 프레임에 대해 내 하위보기를 호출하여 -drawRect를 호출합니까?

정상입니까 아니면 내가 잘못 했습니까?

내가 이상하다있는 UITableViewCell의 문서에서 이것을 발견 : 당신이 리콜, 사용자 정의 도면 세포로 애니메이션 하는 반면으로 편집 모드에서 그리기, 그러나

는 이 때문에 권장되지 않는다 편집 모드를 벗어난 경우 은 성능에 심각한 영향을줍니다.

그래서 -drawRect : 코어 애니메이션을 할 때 매우 나쁩니 까? 나는 또한 다른 사과 자원에서 "애니메이션 중에 다시 그리지 않는다"는 것을 기억합니다. 역설. 다시.

답변

1

drawRect:setNeedsDisplay: YES이 호출 된 후에 호출해야합니다. 스케일링이 진행되면서 뷰를 다시 그리도록 요청하는 중입니다. 크기 조절, 회전 및 이동이 전환의 일부인 경우 캐시 된보기에서 전환을 수행 할 수 있습니다.

2

UIView의 contentModeUIViewContentModeRedraw으로 설정된 경우 바운드가 변경 될 때마다 setNeedsDisplay 문서가 참조됩니다. 그러나 이것이 (애니메이션 시스템이 다르게 동작한다는 인상하에) drawRect에 대한 호출을 설명 할 수있는 애니메이션인지는 확실하지 않습니다.

관련 문제