2014-11-13 2 views
0

what I said here으로 FPS를 계산하는 방법을 찾고 있었는데, UITableView가 스크롤 할 때 drawRect:을 프레임 단위로 호출한다는 아이디어가있었습니다. 그러나 그렇지 않았습니다.iOS : 누가 UITableView를 스크롤하는 동안 UI/화면 새로 고침을 담당합니까?

UITableView의 drawRect:은 위 또는 아래로 빠르게 드래그하거나 버튼을 올려 놓지 않고 한 번만 호출됩니다. 그래서 UITableView의 superview 및 셀 않습니다. 모든 UIViews의 drawRect:은 각각에 대해 한 번만 호출됩니다.

drawRect:이 한 번만 호출되면 WHO는 UITableView의 스크롤 중에 UI/화면 새로 고침을 담당합니까?

내가 jQuery과의 위임 &은 dataSource가 보여 세포 레이아웃에 대한 책임을 알고

1을 업데이트했습니다. 그러나 tableView가 약간 스크롤하면 어떻게 될까요? 대리자 & dataSource가 호출되지 않았지만 화면의 내용은 여전히 ​​ 으로 변경되었습니다. 이 경우에 누가 iPhone 화면에서 UI 새로 고침까지입니까? scrollView 스크롤 -> UIKit -> GPU -> LCD 화면?

+0

스크롤 위임 대리 메서드를 사용할 수 있습니다. 위 또는 아래로 스크롤하면 thew가 호출됩니다. 이를 바탕으로 새로 고침 작업 : –

+0

테이블 뷰 위에 uiscrollview (어딘가)가 있습니다. 어떻게 연결하는지 잘 모르겠지만, 그 클래스는 스크롤에 관한 메시지를 보낼 것입니다. –

+0

@AnnaDickinson'UITableView'는'UIScrollView'의 서브 클래스입니다. –

답변

1

이것은 UITableViewdataSourcedelegate 속성입니다. 사용자 인터페이스를 설정하고 사용자 상호 작용을 처리하는 담당자를 정의 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 물론 UITableView의 델리게이트 및 데이터 소스가 레이아웃 셀을 담당한다는 것을 알고 있습니다. 그러나 tableView가 약간 스크롤하면 어떻게 될까요? 델리게이트 및 데이터 소스가 호출되지는 않지만 화면의 내용은 여전히 ​​변경되었습니다. 이 경우 누가 iPhone 화면에서 UI 새로 고침을합니까? scrollView 스크롤 -> UIKit -> GPU -> LCD 화면? –

+0

모든 iOS 사용자 인터페이스는 결국 OpenGL ES 호출/개체로 나뉩니다. 'UIView'에는 해당 CGLayer가 있는데, 이것은 어떤 방법 으로든 OES에서 렌더링됩니다. 뷰의 변환 (번역/이동, 회전, 크기 조절, 비뚤어 짐 등)을 변경하면 해당 OES 표현도 업데이트됩니다. OES는 각 그리기 루프에서 개체에 드로잉 메서드를 호출합니다.이 드로잉 메서드는 사용자가 찾고있는 것으로 생각하지만 멀리 추상화되어 있습니다. 'drawRect :'메소드는,'setNeedsDisplay'가 불려 갔을 때에 만 불려갑니다. 이것은, 퍼포먼스를 위해서 (때문에) 최소화되고 있습니다. –

+0

감사 & 접수 –

관련 문제