123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- //
- // CollectionViewPlayerCell.m
- // LenzCameraNativeModuleForRN
- //
- // Created by 王昭威 on 2023/1/24.
- //
- #import "CollectionViewPlayerCell.h"
- #import "MoviePlayerViewController.h"
- #import <Masonry/Masonry.h>
- #import "MovieListCellModel.h"
- #import "OperationNodeMovie.h"
- @interface CollectionViewPlayerCell()
- @property (nonatomic, readonly, nullable) NSURL* fileURL;
- @end
- @implementation CollectionViewPlayerCell
- - (UIView *)coverView{
- return self.playerController.view;
- }
- - (NSURL *)fileURL{
- return ((MovieListCellModel*)self.cellModel).movieModel.fileUrl;
- }
- - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
-
- return CGRectContainsPoint(self.imageView.frame, point);
- }
- - (AVPlayer*)play{
- if(self.fileURL == nil){
- return nil;
- }
- if(self.playerController.player.timeControlStatus == AVPlayerTimeControlStatusPlaying){
- return self.playerController.player;
- }
- AVPlayer* player = self.playerController.player;
-
- if(player.currentItem != nil &&
- player.currentItem.status == AVPlayerItemStatusReadyToPlay &&
- player.currentItem.currentTime.value / player.currentItem.currentTime.timescale >= player.currentItem.duration.value / player.currentItem.duration.timescale){
-
- [self.playerController replaceWith:self.fileURL];
- }
-
- [self.playerController.player play];
- self.playIconView.hidden = YES;
- return self.playerController.player;
- }
- - (void)stop{
- self.playIconView.hidden = NO;
- [self.playerController.player pause];
- }
- - (void)setCellModel:(PhotoListCellModel *)cellModel{
- [super setCellModel:cellModel];
- if([cellModel isKindOfClass:[MovieListCellModel class]]){
- self.playerController.movieFileURL = ((MovieListCellModel*)self.cellModel).movieModel.fileUrl;
- [self.playerController replaceWith:self.playerController.movieFileURL];
- }
- }
- - (void)awakeFromNib{
- [super awakeFromNib];
-
- self.imageView.hidden = YES;
-
- UIStoryboard* sb = [UIStoryboard storyboardWithName:[PCSTools shared].mainStoryboardName bundle:[PCSTools sdkBundle]];
- MoviePlayerViewController* playerController = [sb instantiateViewControllerWithIdentifier:@"play-movie-on-cell"];
- [playerController loadViewIfNeeded];
- _playerController = playerController;
- playerController.movieFileURL = ((MovieListCellModel*)self.cellModel).movieModel.fileUrl;
- [self.contentView insertSubview:self.playerController.view belowSubview:self.imageView];
- [self.playerController viewDidLoad];
- self.playerController.view.translatesAutoresizingMaskIntoConstraints = NO;
- }
- - (void)updateConstraints{
- [super updateConstraints];
-
- [self.playerController.view mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(CGRectGetWidth(self.contentView.frame)));
- make.height.equalTo(@(CGRectGetHeight(self.contentView.frame)));
- }];
- }
- - (void)layoutSubviews{
- [super layoutSubviews];
-
-
- CGFloat x = CGRectGetWidth([UIScreen mainScreen].bounds) * 0.5;
- CGFloat y = CGRectGetHeight([UIScreen mainScreen].bounds) * 0.5 - 40;
- self.playIconView.center = CGPointMake(x, y);
- [self.contentView bringSubviewToFront:self.playIconView];
- }
- - (void)dealloc{
-
- }
- @end
|