// // YOUPAIZFDouYinControlView.m // ZFPlayer_Example // // Created by 任子丰 on 2018/6/4. // Copyright © 2018年 紫枫. All rights reserved. // #import "YOUPAIZFDouYinControlView.h" #import "ZFSliderView.h" #import "ZFLoadingView.h" #import "ZFUtilities.h" #import "UIImageView+ZFCache.h" #import "UIView+ZFFrame.h" @interface YOUPAIZFDouYinControlView () /// 封面图 //@property (nonatomic, strong) UIImageView *coverImageView; @property (nonatomic, strong) UIButton *playBtn; @property (nonatomic, strong) ZFSliderView *sliderView; //@property (nonatomic, strong) UIImageView *bgImgView; //@property (nonatomic, strong) UIView *effectView; @end @implementation YOUPAIZFDouYinControlView @synthesize player = _player; - (instancetype)init { self = [super init]; if (self) { [self addSubview:self.playBtn]; [self addSubview:self.sliderView]; [self youpaifresetControlView]; } return self; } - (void)layoutSubviews { [super layoutSubviews]; // self.coverImageView.frame = self.player.currentPlayerManager.view.bounds; CGFloat min_x = 0; CGFloat min_y = 0; CGFloat min_w = 0; CGFloat min_h = 0; CGFloat min_view_w = self.zf_width; CGFloat min_view_h = self.zf_height; min_w = 50; min_h = 50; self.playBtn.frame = CGRectMake(min_x, min_y, min_w, min_h); self.playBtn.center = self.center; min_x = 0; // min_y = min_view_h - 80; min_y = min_view_h-1; min_w = min_view_w; min_h = 1; self.sliderView.frame = CGRectMake(min_x, min_y, min_w, min_h); // self.bgImgView.frame = self.bounds; // self.effectView.frame = self.bgImgView.bounds; } - (void)youpaifresetControlView { self.playBtn.hidden = YES; self.sliderView.value = 0; self.sliderView.bufferValue = 0; // self.coverImageView.contentMode = UIViewContentModeScaleAspectFit; } /// 加载状态改变 - (void)videoPlayer:(ZFPlayerController *)videoPlayer loadStateChanged:(ZFPlayerLoadState)state { // if (state == ZFPlayerLoadStatePrepare) { // self.coverImageView.hidden = NO; // } else if (state == ZFPlayerLoadStatePlaythroughOK || state == ZFPlayerLoadStatePlayable) { // self.coverImageView.hidden = YES; // self.effectView.hidden = NO; // } if ((state == ZFPlayerLoadStateStalled || state == ZFPlayerLoadStatePrepare) && videoPlayer.currentPlayerManager.isPlaying) { [self.sliderView startAnimating]; } else { [self.sliderView stopAnimating]; } } /// 播放进度改变回调 - (void)videoPlayer:(ZFPlayerController *)videoPlayer currentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime { self.sliderView.value = videoPlayer.progress; } - (void)gestureSingleTapped:(ZFPlayerGestureControl *)gestureControl { if (self.player.currentPlayerManager.isPlaying) { [self.player.currentPlayerManager pause]; self.playBtn.hidden = NO; self.playBtn.transform = CGAffineTransformMakeScale(1.5f, 1.5f); [UIView animateWithDuration:0.2f delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ self.playBtn.transform = CGAffineTransformIdentity; } completion:^(BOOL finished) { }]; } else { [self.player.currentPlayerManager play]; self.playBtn.hidden = YES; } } - (void)setPlayer:(ZFPlayerController *)player { _player = player; // [player.currentPlayerManager.view insertSubview:self.bgImgView atIndex:0]; // [self.bgImgView addSubview:self.effectView]; // [player.currentPlayerManager.view insertSubview:self.coverImageView atIndex:1]; } - (void)showCoverViewWithUrl:(NSString *)coverUrl withImageMode:(UIViewContentMode)contentMode { // self.coverImageView.contentMode = contentMode; // // [self.coverImageView setImageWithURLString:@"https://asset.tannicp.cn/uploads/album/202006/24/5582b7edbd52a78bdcd3e4e2538ce13c_.pic.jpg" placeholder:[UIImage imageNamed:@"img_video_loading"]]; // // [self.bgImgView setImageWithURLString:@"https://asset.tannicp.cn/uploads/album/202006/24/5582b7edbd52a78bdcd3e4e2538ce13c_.pic.jpg" placeholder:[UIImage imageNamed:@"img_video_loading"]]; } #pragma mark - getter //- (UIImageView *)bgImgView { // if (!_bgImgView) { // _bgImgView = [[UIImageView alloc] init]; // _bgImgView.userInteractionEnabled = YES; // } // return _bgImgView; //} //- (UIView *)effectView { // if (!_effectView) { // if (@available(iOS 8.0, *)) { // UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; // _effectView = [[UIVisualEffectView alloc] initWithEffect:effect]; // } else { // UIToolbar *effectView = [[UIToolbar alloc] init]; // effectView.barStyle = UIBarStyleBlackTranslucent; // _effectView = effectView; // } // } // return _effectView; //} - (UIButton *)playBtn { if (!_playBtn) { _playBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _playBtn.userInteractionEnabled = NO; [_playBtn setImage:[UIImage imageNamed:@"vqu_images_D_video_play"] forState:UIControlStateNormal]; } return _playBtn; } - (ZFSliderView *)sliderView { if (!_sliderView) { _sliderView = [[ZFSliderView alloc] init]; _sliderView.maximumTrackTintColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.2]; _sliderView.minimumTrackTintColor = [UIColor redColor];//滑杆进度颜色 _sliderView.bufferTrackTintColor = [UIColor clearColor]; _sliderView.sliderHeight = 1; _sliderView.isHideSliderBlock = NO; } return _sliderView; } -(void)setHideenProgess:(BOOL)hideenProgess{ _hideenProgess = hideenProgess; self.sliderView.hidden =hideenProgess; self.volumeBtn.hidden = NO; } //- (UIImageView *)coverImageView { // if (!_coverImageView) { // _coverImageView = [[UIImageView alloc] init]; // _coverImageView.userInteractionEnabled = YES; // _coverImageView.clipsToBounds = YES; // } // return _coverImageView; //} @end