Hibit_iOS/HiBit/Project/Player/View/GKDYVideoPortraitCell.m
2024-06-11 10:51:38 +08:00

175 lines
5.7 KiB
Objective-C
Executable File

//
// GKDYVideoPortraitCell.m
// GKDYVideo
//
// Created by QuintGao on 2023/5/5.
// Copyright © 2023 QuintGao. All rights reserved.
//
#import "GKDYVideoPortraitCell.h"
@interface GKDYVideoPortraitCell()<GKDYVideoPortraitViewDelegate, UIScrollViewDelegate>
@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