iPhone UITableView 스크롤 성능을 향상시키는 비결은 무엇입니까?
저는 각 셀에 상당히 큰 이미지를 로드하고 이미지 크기에 따라 셀 높이가 달라지는 적절한 뷰를 가지고 있습니다.스크롤 성능은 괜찮은 편이지만 가끔은 덜컹거릴 수도 있습니다.
FiryRobot 블로그에서 찾은 팁은 다음과 같습니다.
적합한 보기 스크롤 성능을 개선하기 위한 팁이 있는 사람이 있습니까?
- 행 높이 캐시(테이블 보기에서 자주 요청할 수 있음)
- 테이블에 사용된 이미지에 대해 가장 최근에 사용되지 않은 캐시를 만들고 메모리 경고를 받으면 비활성 항목을 모두 비활성화합니다.
- 그림에 있는 모든 것을 그립니다.
UITableViewCell
의drawRect:
가능하면 모든 비용을 들여 하위 뷰를 피합니다(또는 표준 내게 필요한 내게 필요한 기능이 있는 경우, 컨텐츠 뷰는drawRect:
) - 당신의 것을 만드세요.
UITableViewCell
의 레이어 불투명(내용 보기가 있는 경우에도 마찬가지) - 의 권장에 따라 재사용 가능한 CellIdentifier 기능을 사용합니다.
UITableView
예문/해석 - 사전에 굽지 않은 그라데이션/복잡한 그래픽 효과 방지
UIImage
s
- 하위 분류 중인 경우
UITableViewCell
닙을 사용하지 말고 코드로 작성합니다.Nib 파일을 로드하는 것보다 훨씬 빠릅니다. - 이미지를 사용하는 경우 각 이미지에 대해 파일에서 두 번 이상 로드할 필요가 없도록 이미지를 캐싱해야 합니다(메모리가 있는 경우 이미지가 차지하는 공간이 얼마나 많은지 알게 됩니다).
- 가능한 한 많은 요소를 불투명하게 만듭니다.마찬가지로 투명도가 있는 이미지는 사용하지 마십시오.
Tweetie 뒤에 있는 개발자는 이것에 대해 광범위하게 썼고 그 앱에서 어떻게 수행되었는지 보여주는 코드를 가지고 있습니다.기본적으로 테이블 셀당 하나의 사용자 정의 뷰를 사용하고 다른 옵션 중에서 Interface Builder를 사용하여 하위 보기가 아닌 수동으로 그릴 것을 권장합니다.
또한 Apple은 TableView에서 TableView에 대한 자체 샘플 코드를 업데이트했습니다.제품군 튜토리얼(이에 대한 응답으로 가능합니까?)
UITableView 스크롤링의 최고 성능 킬러는 셀 뷰 레이어에 그림자를 그리는 것이므로 스크롤링 성능이 중요한 경우 기본적으로 메인 스레드의 속도를 늦추지 않는 한 그림자를 만들지 마십시오.
수락된 답변 중 그림자와 레이어에 대한 언급이 없었기 때문에 이것이 말해야 한다고 생각했습니다. :+)
에 대한 모든 UITableView
스크롤 성능은 다른 답변에 이미 설명된 기술을 사용하여 해결할 수 있습니다.그러나 성능 저하는 본질적으로 잘못된 것 또는 반복적인 것으로 인해 발생하는 경우가 많습니다.
▁▁fact은▁the실.UITableView
는 셀을 재사용하며, 각 셀이 함께 고유한 이미지를 필요로 할 수 있다는 사실은 솔루션을 다소 복잡하게 만듭니다.일반적인 방법으로 해결되는 방법에서 다음과 같이 주의해야 할 사항을 요약합니다.
- REST/데이터베이스에서 데이터 소스로 데이터 로드합니다.이 단계는 백그라운드에서 수행해야 하며, 최종적으로 dispatch_async와 GCD 대기열을 함께 사용해야 합니다.
- 관련 데이터 모델 개체를 만들고 초기화하여 배열 내부에 배치합니다.
[tableView reloaddata]
- 에 안에.
cellForRowAtIndexPath
배열의 올바른 데이터 모델 개체로부터 데이터(텍스트)를 설정하는 코드를 포함합니다. - 이제 이미지도 URL 형식일 수 있으므로 표 보기에서 수행하는 셀 재사용 때문에 이 단계는 약간 특이할 수 있습니다.이 사실의 핵심은 비동기 큐를 사용하여 장치 캐시/URL에서 이미지를 다시 로드한 다음 올바른 cell.image(셀 이미지 속성이 무엇이든)로 설정하는 것입니다.
문제를 방지하려면 테이블 뷰 내부의 이미지 로드를 느리게 하는 방법에 대한 이 자습서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/1352479/tricks-for-improving-iphone-uitableview-scrolling-performance
'source' 카테고리의 다른 글
변수/포인트의 유형을 C로 출력할 수 있는 방법이 있습니까? (0) | 2023.08.05 |
---|---|
PowerShell 스크립트를 깃 후크로 실행 (0) | 2023.08.05 |
YAML 파일을 Python 객체로 구문 분석/읽기하는 방법은 무엇입니까? (0) | 2023.08.05 |
null 가능한 열을 사용하여 MySQL 테이블을 조인하는 방법은 무엇입니까? (0) | 2023.08.05 |
DB(Hibernate 및 Oracle 10g)에서 동일한 행을 읽는 두 개의 서로 다른 스레드를 방지하는 방법 (0) | 2023.08.05 |