0

현재 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의 많은 문제를 생성

  1. 스크롤이 완전히
  2. 을 멈출 때까지로드가 시작되지 않습니다 비디오 이 접근법은 끌기 동작을 고려하지 않습니다. 콜렉션보기 탐색
  3. 비디오가로드되면 모든 끌기 또는 스크롤이 비디오로드/재생을 중지합니다.
  4. 는 스크롤 사이에 비디오가로드되지 않은 시간이 있습니다

I는 다음과 로딩 비디오의 인스 타 그램의 방법과 유사한 시스템으로이 현재의 접근 방식을 설정하려고 :

  1. 사용자가 스크롤하는 동안 비디오가 화면에 나타나기 시작하면 비디오가로드되기 시작합니다.
  2. 사용자가 스크롤하는 동안 다른 비디오가 화면에 나타나기 시작하면 비디오로드가 중지됩니다. 비디오는 항상로드되고
  3. 하나는, 내가이 기능을 달성하기 위해, 이러한 로딩 기능을 위해 백그라운드 스레드에서 수행해야한다는 점을 알고 로딩 하나 개의 비디오 사이에 다운 타임과 다른

없다 내가 처리 할 수있는 완벽한 스크롤링을 허용하기 위해서,이 기능을 얻기 위해 지금 사용하고있는 메소드 대신에 사용해야하는 메소드를 알아야합니다.

+0

에 표시된 방법으로 표시되고 있는지 감지하는 scrollViewDidScroll를 사용하여 셀 중앙에 때 재생 만들려면 'UICollectionViewDelegate'의'willDisplay :'와'didEndDisplaying :'메소드를 아직 체크 아웃하지 않았다면 체크 아웃하십시오. 이름에서 알 수 있듯이, 표시되는 셀에 따라 로딩을 시작할 때이를 직접 알려줍니다. – davidf2281

답변

0
  1. 동영상의 콘텐츠/미리보기 이미지를로드하는 데 '지연 로딩'을 사용하도록 설정해야합니다.

  2. 은 오히려 당신이 할 수 있습니다 스크롤을 기반으로 세포 가시성을 추론하는 것보다 세포가 완전히이 answer

+0

비디오가 중앙에있을 때 비디오를 재생하는 방법을 알고 있고 그 내용을로드하는 방법을 알고 있습니다. 두 번째 목록에서 설명한대로 기능을 변경하려고합니다. – Roger99

+0

어쩌면 내가 오해 한 것일까 요, 두 번째 목록에서 원하는 것은 단순히 lazyloading입니까? – GeneCode

관련 문제