2016-08-11 20 views
12

Tôi đang cố phát video trong UICollectionview Ô sử dụng ZOWVideoPlayer. Video đang phát hoàn hảo nhưng hiện tại, bộ sưu tập collectionview của tôi đang phát tất cả các video hiển thị. Tôi chỉ muốn phát một video hoàn toàn có thể nhìn thấy được. Điều này có nghĩa là video hiện tại không bị cắt bởi quá trình cuộn (pixel không nằm ngoài màn hình, nhưng hiển thị đầy đủ).Cách phát video theo phong cách Facebook bằng cách sử dụng UICollectionview

Tôi cũng đã thêm mã để kiểm tra các tế bào có thể nhìn thấy hoàn toàn trong scrollview phương pháp đại biểu nhưng sau đó tôi collectionview bị mắc kẹt trong vòng 1 hoặc 2 giây và sau đó di chuyển, vì vậy hãy giúp tôi ra ngoài.

Và vui lòng đọc câu hỏi trước rồi bỏ phiếu xuống.

Đây là đoạn mã để kiểm tra tế bào có thể nhìn thấy

- (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

hãy thêm mã của các tế bào có thể nhìn thấy kiểm tra để làm rõ câu hỏi của bạn. –

+0

i cập nhật câu hỏi, vui lòng kiểm tra xem nó – Hardik

+0

_just lời khuyên qua đường đi _... @Hardik, ** (1) ** Vui lòng thêm thẻ ngôn ngữ mã hóa. Đó có phải là 'Swift' (hay 'Obj-C') không? Ai đó biết câu trả lời có thể thậm chí không xem các thẻ được chỉ định hiện tại của bạn, nhưng tất cả chúng tôi đều kiểm tra (các) ngôn ngữ mã hóa của chúng tôi, đúng không? ** ** (2) ** Chính xác là "video kiểu Facebook"? Cải thiện các mô tả mong muốn (Tôi chắc chắn bạn cần video để chơi khi tập trung vào màn hình hoặc ít nhất là khi vị trí di chuyển không "cắt" bất kỳ điểm ảnh nếu không nó sẽ tự động tạm dừng. Đó là một đoán tốt?). Bạn kiểm tra vị trí như thế nào? –

Trả lời

1

tôi nghi ngờ phương pháp của bạn là nhận được gọi là nhiều hơn một lần. Vì bạn chỉ đang kiểm tra sự tồn tại của người chơi. Tại sao bạn không thêm một kiểm tra khác cho trạng thái của người chơi? Vì vậy, nếu người chơi đang chơi, chỉ cần bỏ qua nó.

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

isPlaying -> Một enum bạn có thể thêm để lưu trữ máy nghe tình trạng hiện thời

Hy vọng điều này có ý nghĩa;)

+0

Tôi nghĩ rằng đó là về vị trí video trên màn hình trong khi cuộn. Xem liệu chỉnh sửa câu hỏi mới có giúp ... –

+0

@ VC.One Tuyệt đối là do vị trí đó. Miễn là video hiển thị hoàn toàn trên màn hình, phương thức ủy nhiệm sẽ được gọi. Vì vậy, nếu chúng tôi đảm bảo rằng người chơi sẽ gọi phương thức "phát" chỉ một lần, chúng tôi sẽ không gặp phải sự chậm trễ. Như tôi nghi ngờ nguyên nhân chính của sự chậm trễ là chơi được gọi là nhiều thời gian. –

+0

Tôi không sử dụng Swift/Obj-C (được xem bởi vì Asker được gắn thẻ 'video'). Liệu video có tự động tạm dừng khi một cuộn tinh tế bây giờ làm cho nó chỉ hiển thị một phần không? Video tiếp theo trong ô "hiển thị rõ nhất" mới giờ đây sẽ tự động phát ?. Bạn có một câu trả lời đúng tiềm năng nếu đó là sự thật. Nhưng đó là để Asker xác nhận ... –

Các vấn đề liên quan