2016-08-11 40 views
12

Próbuję odtworzyć wideo w UICollectionview Komórka przy użyciu ZOWVideoPlayer. Wideo gra idealnie, ale obecnie mój collectionview odtwarza wszystkie widoczne filmy. Chcę odtwarzać tylko pojedyncze, całkowicie widoczne wideo. Oznacza to bieżące wideo, które nie jest przycinane przez przewijanie (piksele nie są wyświetlane poza ekranem, ale są w pełni widoczne).Jak odtwarzać wideo w stylu Facebook za pomocą UICollectionview

Dodałem też kod, aby sprawdzić pełną widzialną komórkę Scrollview metod delegata ale wtedy mój CollectionView utknie dla 1 lub 2 sekundy, a następnie przenosi się, więc proszę mi pomóc.

I proszę najpierw przeczytaj pytanie, a następnie głosuj w dół.

Oto kod do wyboru widocznego komórce

- (void)checkVisibilityOfCell:(CustomCell *)cell inScrollView:(UIScrollView *)aScrollView { 
    @try { 
     CGRect cellRect = [aScrollView convertRect:cell.frame toView:aScrollView.superview]; 
     if (cell.videoPlayer) { 
      if (CGRectContainsRect(aScrollView.frame, cellRect)){ 
       //Play Video 
      } 
      else{ 
       //Pause Video 
      } 
     } 
    } @catch (NSException *exception) { 

    } @finally { 

    } 
} 
+0

Należy dodać kod widocznych komórek sprawdzanie wyjaśniając swoje pytanie. –

+0

aktualizuję pytanie, proszę sprawdzić to – Hardik

+0

_wskazówka przechodnia -... @Hardik, ** (1) ** Proszę dodać znacznik języka kodowania. Czy to 'Swift' (lub' Obj-C')? Ktoś, kto zna odpowiedź, może nawet nie oglądać twoich obecnych, określonych tagów, ale wszyscy czekamy na nasz język (y) kodowania, prawda? .. ** (2) ** Co to jest "wideo w stylu Facebook" dokładnie? Ulepsz żądany opis (upewniłem się, że potrzebujesz wideo do odtworzenia, gdy scentralizujesz je do ekranu lub przynajmniej, gdy pozycja przewijania nie "przycina" żadnych pikseli, w przeciwnym razie powinno nastąpić automatyczne wstrzymanie.) Czy to jest dobre?). Jak sprawdzasz pozycję? –

Odpowiedz

1

Podejrzewam metoda jest uzyskiwanie nazywa więcej niż jeden raz. Ponieważ sprawdzasz jedynie istnienie graczy. Dlaczego nie dodasz innego czeku do stanu gracza? Więc jeśli gracz gra, po prostu go zignoruj.

if (CGRectContainsRect(aScrollView.frame, cellRect) && !isPlaying) { 

isPlaying -> enum można dodać do przechowywania gracz stan obecny

nadzieję, że to ma sens;)

+0

Myślę, że chodzi o pozycję wideo na ekranie podczas przewijania. Sprawdź, czy nowa edycja pytania pomaga ... –

+0

@ VC.One Jest to absolutnie związane z pozycją. Dopóki wideo jest w pełni widoczne na ekranie, zostanie wywołana metoda delegata. Jeśli więc zapewniamy, że gracz nazwie metodę "play" tylko raz, nie będziemy musieli stawić czoła opóźnieniu. Podejrzewam, że główną przyczyną opóźnienia jest gra nazywana wielokrotnie. –

+0

Nie używam Swift/Obj-C (widziałem, ponieważ Asker otagował 'wideo'). Czy wideo zatrzyma się automatycznie, gdy subtelny przewijek sprawi, że będzie on tylko częściowo widoczny? Kolejne wideo w nowej "najbardziej widocznej" komórce będzie teraz automatycznie odtwarzane ?. Masz potencjalną poprawną odpowiedź, jeśli to prawda. Ale to jest dla Askera, aby potwierdzić ... –