// // GKDYVideoPortraitCell.m // GKDYVideo // // Created by QuintGao on 2023/5/5. // Copyright © 2023 QuintGao. All rights reserved. // #import "GKDYVideoPortraitCell.h" @interface GKDYVideoPortraitCell() @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, assign) BOOL isFullscreen; @property (nonatomic, assign) BOOL isCodeSet; @end @implementation GKDYVideoPortraitCell - (void)initUI { [self addSubview:self.scrollView]; [self.scrollView addSubview:self.coverImgView]; // [self addSubview:self.coverImgView]; [self.coverImgView addSubview:self.portraitView]; [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }]; // [self.coverImgView mas_makeConstraints:^(MASConstraintMaker *make) { // make.edges.equalTo(self); // }]; } - (void)layoutSubviews { [super layoutSubviews]; self.coverImgView.frame = self.scrollView.bounds; self.portraitView.frame = self.coverImgView.bounds; } - (void)loadData:(GKDYVideoModel *)model { [super loadData:model]; self.portraitView.model = model; if (self.manager) { [self.manager requestPlayUrlWithModel:model completion:nil]; } } - (void)resetView { [super resetView]; self.portraitView.slider.player = nil; self.portraitView.slider.sliderView.value = 0; self.portraitView.hidden = NO; self.portraitView.frame = self.coverImgView.bounds; [self.coverImgView addSubview:self.portraitView]; } #pragma mark - UIScrollViewDelegate - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return self.coverImgView; } - (void)scrollViewDidZoom:(UIScrollView *)scrollView { self.coverImgView.center = [self centerOfScrollViewContent:scrollView]; } - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view { if (self.isCodeSet) return; if ([self.delegate respondsToSelector:@selector(videoCell:zoomBegan:)]) { [self.delegate videoCell:self zoomBegan:self.model]; } } - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale { if (self.isCodeSet) { self.isCodeSet = NO; return; } if ([self.delegate respondsToSelector:@selector(videoCell:zoomEnded:isFullscreen:)]) { BOOL isFullscreen = NO; if (scale > 1) { isFullscreen = YES; self.isFullscreen = isFullscreen; }else { self.isFullscreen = !self.isFullscreen; isFullscreen = self.isFullscreen; } [self.delegate videoCell:self zoomEnded:self.model isFullscreen:isFullscreen]; } if (scale != 1) { self.isCodeSet = YES; [scrollView setZoomScale:1.0f animated:YES]; } } - (CGPoint)centerOfScrollViewContent:(UIScrollView *)scrollView { CGFloat offsetX = (scrollView.bounds.size.width > scrollView.contentSize.width) ? (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0; CGFloat offsetY = (scrollView.bounds.size.height > scrollView.contentSize.height) ? (scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0; CGPoint actualCenter = CGPointMake(scrollView.contentSize.width * 0.5 + offsetX, scrollView.contentSize.height * 0.5 + offsetY); return actualCenter; } - (void)closeFullscreen { self.isFullscreen = NO; if ([self.delegate respondsToSelector:@selector(videoCell:zoomEnded:isFullscreen:)]) { [self.delegate videoCell:self zoomEnded:self.model isFullscreen:self.isFullscreen]; } } #pragma mark - GKDYVideoPortraitViewDelegate - (void)videoPortraitView:(GKDYVideoPortraitView *) view didClickFavorite:(GKDYVideoModel *)model { if ([self.delegate respondsToSelector:@selector(videoCell:didClickFavorite:)]) { [self.delegate videoCell:self didClickFavorite:model]; } } - (void)videoPortraitView:(GKDYVideoPortraitView *) view didClickEpiscode:(GKDYVideoModel *)model { if ([self.delegate respondsToSelector:@selector(videoCell:didClickEpiscode:)]) { [self.delegate videoCell:self didClickEpiscode:model]; } } - (void)videoPortraitView:(GKDYVideoPortraitView *) view didClickShare:(GKDYVideoModel *)model { if ([self.delegate respondsToSelector:@selector(videoCell:didClickShare:)]) { [self.delegate videoCell:self didClickShare:model]; } } - (void)videoPortraitView:(GKDYVideoPortraitView *) view didClickDanmu:(GKDYVideoModel *)model { if ([self.delegate respondsToSelector:@selector(videoCell:didClickDanmu:)]) { [self.delegate videoCell:self didClickDanmu:model]; } } - (void)videoPortraitView:(GKDYVideoPortraitView *) view didClickFullscreen:(GKDYVideoModel *)model { if ([self.delegate respondsToSelector:@selector(videoCell:didClickFullscreen:)]) { [self.delegate videoCell:self didClickFullscreen:model]; } } #pragma mark - Lazy - (UIScrollView *)scrollView { if (!_scrollView) { _scrollView = [[UIScrollView alloc] init]; _scrollView.delegate = self; _scrollView.backgroundColor = UIColor.clearColor; _scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; _scrollView.showsVerticalScrollIndicator = NO; _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.minimumZoomScale = 1.0f; _scrollView.maximumZoomScale = 10.0f; } return _scrollView; } - (GKDYVideoPortraitView *)portraitView { if (!_portraitView) { _portraitView = [[GKDYVideoPortraitView alloc] initWithFrame:UIScreen.mainScreen.bounds]; _portraitView.delegate = self; } return _portraitView; } @end