문제

나는있다 UITableView 그것은 셀에 많은 이미지를 표시하며 스크롤 성능에 대해 행복하지 않습니다. 나의 UITableView iPhone의 사진 앱과 같습니다. iPhone foto 앱이 왜 화면에 아무것도없는 것처럼 빠르게 스크롤하는지 아는 사람이 있습니까?

그리고 내 성능/스크롤 속도를 높이기위한 몇 가지 팁/요령이 있습니까?

도움이 되었습니까?

해결책

이미지를 사전에 미리 잡고 게으르게하지 않아야합니다. 테이블을 스크롤하면 UitableViewDatasource : CellforseAtIndexPath : 메소드가 호출되고 이미지를로드하는 경우 셀 내용을 스크롤로 요청하여 응용 프로그램에서 대기 시간을 만듭니다. CellforyatindexPath를 만들어보십시오 : 이와 같은 것 :

NSDate *date = [NSDate date];
... your cell loading code ...
NSLog( @"Elapsed time to generate cell %.2d", [date timeIntervalSinceNow] );

각 세포를 얻는 데 얼마나 오래 지출하는지 알 수 있습니다.

이 문제를 해결하려면 필요한만큼 복잡 할 수 있습니다. 많은 이미지의 경우 점점 더 영리해야합니다. 마지막으로 요청한 NSIndexPath를 추적하고 스크롤이 위 또는 아래로 이동하여 +nsimage : imageNamed : 한 번에 한 페이지에 한 페이지의 이미지를 전달하거나 (예 : 현재 위치의 5 개의 이미지 5 개) 또는 당신을 위해 작동하는 모든 것 (사람들이 손가락을 테이블 바닥으로 돌려 스 와이프해야한다는 사실을 활용합니다. 다시 말하지만, 테이블 요소의 소비에는 일시 정지가 있습니다. 스 와이프를 채울 수있을 정도로 페이지 크기를 크게 만들 수 있습니다). 그러나 이것은 아마도 크지 않을 것입니다. 왜냐하면 모든 셀에 대한 불안한 하중 대신 한 번에 모든 영향을 미치기 때문입니다.

UI에 대한 제어를 신속하게 반환하고 시스템이 프리 페치 된 이미지를 사용하여 예약 할 수 있습니다. nsrunloop : performselector : target : argument : order : mode : nsimage : imageNamed :, 그리고 셀이 충분히 미리 가져 오면 셀을 요청하면 표시 할 수 있습니다.

그래도 기억 문제를 고통스럽게 알고 있어야합니다. 이것이 문제라고 생각한다면 사용하십시오. nsimage : initwithContentsOffile :, 낮은 메모리 상황에서 이미지 캐시를 정리합니다. 캐시 무효화 알고리즘에 사용되는 전략에 따라 이러한 상황은 캐시를 제거하고 무효화 된 프리 페치를 다시로드해야 할 때 "말더퍼"를 유발할 수 있습니다.

다른 팁

UitableViewCell을 서브 클래스하고 각 셀의 내용을 직접 그리는 데있어 훌륭한 스크롤 성능 결과 가보고되었습니다. 허용 된 답변을 참조하십시오 이 질문 자세한 내용과 코드 샘플 링크.

여기서 문제는 메모리입니다. 한 번에 너무 많은 고해상도 사진을로드하고 있습니다. FOTO 앱은 테이블 뷰를 사용하지 않으며 스크롤보기를 사용하고 한 번에 최대 3 장의 사진 만로드하므로 메모리는 문제가되지 않습니다. Foto 앱과 비슷한 일을하려는 경우 스크롤보기를 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top