현재 xcode에서 목적 화면의 약 80 %를 차지하는 셀을 사용하여 전체 화면을 가로로 스크롤하는 콜렉션보기 기능을 구현하고 있습니다. Instagram, Vine 등과 비슷합니다. 처음에는 이러한 셀에서 뷰를로드 할 때 백엔드 소스에서로드되는 비디오 축소판이 있습니다.비디오의 UICollectionView에서 스크롤하는 동안 효율적으로로드 처리
이러한 비디오를 모두 한 번에로드하는 것은 대단히 비효율적이므로 사용자가 컬렉션보기를 스크롤하는 동안 한 번에 하나의 비디오 만로드하는 방법을 찾으려고합니다.
이 방법을 사용하는 방법은 scrollViewDidEndDecelerating
메서드를 사용하여 스크롤 한 후 화면 중앙에있는 셀을 계산 한 다음 비디오로드를 시작하고 scrollViewDidScroll
메서드를로드하는 것을 중지하는 것입니다. 비디오. 이 구현은 다음과 같습니다 : 모두가 아마 볼 수 있듯이
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//calculate which cell is in the center
//load video in respective cell
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//stop loading video
}
,이 UX의 많은 문제를 생성
- 스크롤이 완전히
- 을 멈출 때까지로드가 시작되지 않습니다 비디오 이 접근법은 끌기 동작을 고려하지 않습니다. 콜렉션보기 탐색
- 비디오가로드되면 모든 끌기 또는 스크롤이 비디오로드/재생을 중지합니다.
- 는 스크롤 사이에 비디오가로드되지 않은 시간이 있습니다
I는 다음과 로딩 비디오의 인스 타 그램의 방법과 유사한 시스템으로이 현재의 접근 방식을 설정하려고 :
- 사용자가 스크롤하는 동안 비디오가 화면에 나타나기 시작하면 비디오가로드되기 시작합니다.
- 사용자가 스크롤하는 동안 다른 비디오가 화면에 나타나기 시작하면 비디오로드가 중지됩니다. 비디오는 항상로드되고
- 하나는, 내가이 기능을 달성하기 위해, 이러한 로딩 기능을 위해 백그라운드 스레드에서 수행해야한다는 점을 알고 로딩 하나 개의 비디오 사이에 다운 타임과 다른
없다 내가 처리 할 수있는 완벽한 스크롤링을 허용하기 위해서,이 기능을 얻기 위해 지금 사용하고있는 메소드 대신에 사용해야하는 메소드를 알아야합니다.
에 표시된 방법으로 표시되고 있는지 감지하는
scrollViewDidScroll
를 사용하여 셀 중앙에 때 재생 만들려면 'UICollectionViewDelegate'의'willDisplay :'와'didEndDisplaying :'메소드를 아직 체크 아웃하지 않았다면 체크 아웃하십시오. 이름에서 알 수 있듯이, 표시되는 셀에 따라 로딩을 시작할 때이를 직접 알려줍니다. – davidf2281