2012-01-12 2 views
2

뷰를 뷰의 drawRect 메서드로 드로잉하는 서브 뷰 VS로 뷰를 추가하는 것의 차이점은 무엇입니까?iPhone - subView와 drawRect를 추가하는 UIView?

나는 두 접근법을 모두 사용하지만, drawRect에서 수행하면 두 개의 뷰가 아닌 단일 뷰가되거나 서브 뷰로 추가하는 것이 더 쉽다는 점과는 별개로 궁금합니다. 어떤 것을 명확하게 사용해야하는 특정 상황이 있습니까?

답변

3

-drawRect:을 무시하면 복잡한 UITableViewCell을 그릴 수 있습니다. 모든 하위 뷰를 합성하고 하나의 뷰로 그려면 테이블 뷰 스크롤 성능이 월등히 향상됩니다.

일반적으로 성능이 떨어지는 경우에만 가능한 최고 수준의 API를 사용하고 낮은 수준으로 떨어집니다.

+0

감사합니다. 내 응용 프로그램에서 셀은 많은 하위 뷰 (무제한, 일반적으로 5에서 20 사이)를 가질 수 있으며 3GS에서는 정말 부드럽지 않다는보고를 받았습니다. 이제 나는 그 이유를 알았어! – ksol

+0

하위 뷰에 알파가 전혀없는 경우 큰 문제가됩니다. GPU는 모든 프레임에 대해 1/60 초 만에 합성 작업을 수행하기 위해 열심히 노력하고 있습니다. 도면이 제 시간에 완료되지 않으면 해당 프레임이 떨어지면서 성능이 고르지 않게됩니다. –

+0

하위보기는 그라데이션 배경이있는 사용자 정의 레이블이므로 불투명도로 조정하지 않습니다. 하지만 여전히 그럴 수 있습니다. – ksol

4

당신이 지적한 것처럼 하위보기를 추가하는 것이 더 쉽습니다. 저는이 사실을 90 %의 사례에서 볼 수 없습니다. 일반적으로 하위 뷰를 추가하고 라이브러리가 올바른 위치에 하위 뷰 그리기를 처리하도록해야합니다.

내보기에서 맞춤형 드로잉을 수행하기 위해서만 -drawRect:을 사용하지만 하위 뷰를 그리지는 않습니다. 불필요한 복잡성을 만듭니다. 많은 실적이 필요한 경우 -drawRect:에서 도와 드릴 수 있습니다. 또한 단순한 드로잉의 경우에, -drawRect:은 여러 개의 하위 뷰를 만드는 것과는 대조적으로 매우 좋습니다. 그러나 일반적으로 하위 뷰를 추가하는 것이 좋습니다.

미래에이 하위 뷰가 터치 이벤트를 받거나 대화식으로 처리하기를 원한다면 -drawRect: 코드를 리팩터링하는 것이 더 어렵습니다.

관련 문제