2012-09-08 3 views
2

테이블 뷰 셀에 자주 업데이트되는 UIProgressView가 포함되어 있으면 테이블 뷰의 스크롤 동작이 크게 영향을받습니다.UITableView의 UIProgressView 업데이트로 인해 스크롤링 아티팩트가 발생합니다.

보다 정확하게는 진행보기를 자주 업데이트하기 때문에 테이블보기의 "고무줄"애니메이션이 애니메이션으로 표시되는 동안 테이블보기의 위치가 약간 변경됩니다. 상단에서 테이블 뷰를 당길 때도 같은 결과가 발생합니다. 설명하기가 까다 롭지 만, 당신이이 요지를 얻길 바랍니다.

물론 백그라운드에서 진행보기를 업데이트하는 것은 UIProgressView가 장면 뒤에서 작동하는 방식 때문에 가능하지 않습니다. 이것은 알려진 이슈입니까? 이 문제에 대한 해결책이 있습니까?

+1

bool 변수를 설정하면 사용자가 스크롤을 시작했을 때 uiprogressview가 업데이트되지 않고 스크롤 할 때 스크롤이 끝나면 진행보기가 업데이트되고 bool 변수가 false로 설정됩니다. – prasad

+0

좋은 제안이지만 유감스럽게도 문제가 해결되지 않습니다. –

답변

1

이 문제가 해결 방법없이 해결 될 수 있는지 확실하지 않습니다. 내가 찾은 솔루션은 타이머와 진행 캐시를 사용합니다. 내 생각 엔 애플도 비슷한 접근법을 사용하고있다.

필자가 생각해 낸 해결책은 표보기에 표시된 각 항목의 진행 상황을 추적하는 개체, 배열 또는 사전을 생성하는 것입니다. 테이블 뷰 셀에 대한 다운로드 진행률이 변경 될 때마다 각 셀을 업데이트하는 대신 테이블 뷰를 관리하는 뷰 컨트롤러는 일정한 시간 간격으로 보이는 테이블 뷰 셀을 업데이트합니다. 이는 원하는 빈도 또는 빈번하지 않을 수 있습니다.

저는 이것이 애플이 어떻게하는지 생각합니다. 예를 들어, Podcast 응용 프로그램의 다운로드보기에있는 진행보기는 일정한 시간 간격으로 업데이트되며 원활하게 진행되지 않습니다. 이는 Apple이 타이머를 사용하여 테이블보기를 업데이트 한 것으로 추측합니다.

0

정상적인 UITableView 동작처럼 들리지 않습니다. 백그라운드에서 진행 뷰를 업데이트하는 것이 UIProgressView가 장면 뒤에서 작동하는 방식 때문에 가능하지 않다는 것을 말하는 것이 무엇인지 이해하려고합니다. 모든 비 UI 작업이 백그라운드에서 수행되고 주 스레드의 UIProgressView에 대한 업데이트 만 수행하면 이러한 가공물은 사라질 수밖에 없습니다.

+0

내가 말하고자하는 것은 백그라운드 스레드에서 UIProgressView를 업데이트하는 것이 옵션이 아니라는 것입니다. 그것은 참으로 이상합니다. UIProgressView가 포함 된 UITableViewCell은 KVO를 통해 진행률 뷰를 업데이트하기위한 호출을 수신하며 이는 진행률 뷰 업데이트주기에서 발생하는 모든 것입니다. –