YBGoodPlayerCtrView.m 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. //
  2. // YBGoodPlayerCtrView.m
  3. // YBVideo
  4. //
  5. // Created by YB007 on 2022/6/24.
  6. // Copyright © 2022 cat. All rights reserved.
  7. //
  8. #import "YBGoodPlayerCtrView.h"
  9. #import <ZFPlayer/UIView+ZFFrame.h>
  10. #import <ZFPlayer/UIImageView+ZFCache.h>
  11. #import <ZFPlayer/ZFUtilities.h>
  12. #import "ZFLoadingView.h"
  13. @interface YBGoodPlayerCtrView()
  14. /// 加载loading
  15. @property (nonatomic, strong) ZFLoadingView *activity;
  16. @property (nonatomic, strong) UIButton *playBtn;
  17. @end
  18. @implementation YBGoodPlayerCtrView
  19. @synthesize player = _player;
  20. - (instancetype)init {
  21. self = [super init];
  22. if (self) {
  23. [self addSubview:self.activity];
  24. [self addSubview:self.playBtn];
  25. }
  26. return self;
  27. }
  28. - (void)layoutSubviews {
  29. [super layoutSubviews];
  30. CGFloat min_x = 0;
  31. CGFloat min_y = 0;
  32. CGFloat min_w = 0;
  33. CGFloat min_h = 0;
  34. min_w = 44;
  35. min_h = 44;
  36. self.playBtn.frame = CGRectMake(min_x, min_y, min_w, min_h);
  37. self.playBtn.center = self.center;
  38. self.activity.frame = CGRectMake(min_x, min_y, min_w, min_h);
  39. self.activity.zf_centerX = self.zf_centerX;
  40. self.activity.zf_centerY = self.zf_centerY;
  41. }
  42. /// 播放状态改变
  43. - (void)videoPlayer:(ZFPlayerController *)videoPlayer playStateChanged:(ZFPlayerPlaybackState)state {
  44. if (state == ZFPlayerPlayStatePlaying) {
  45. /// 开始播放时候判断是否显示loading
  46. if (videoPlayer.currentPlayerManager.loadState == ZFPlayerLoadStateStalled) {
  47. [self.activity startAnimating];
  48. } else if ((videoPlayer.currentPlayerManager.loadState == ZFPlayerLoadStateStalled || videoPlayer.currentPlayerManager.loadState == ZFPlayerLoadStatePrepare)) {
  49. [self.activity startAnimating];
  50. }
  51. } else if (state == ZFPlayerPlayStatePaused) {
  52. /// 暂停的时候隐藏loading
  53. [self.activity stopAnimating];
  54. } else if (state == ZFPlayerPlayStatePlayFailed) {
  55. [self.activity stopAnimating];
  56. }
  57. }
  58. /// 加载状态改变
  59. - (void)videoPlayer:(ZFPlayerController *)videoPlayer loadStateChanged:(ZFPlayerLoadState)state {
  60. if (state == ZFPlayerLoadStateStalled && videoPlayer.currentPlayerManager.isPlaying) {
  61. [self.activity startAnimating];
  62. } else if ((state == ZFPlayerLoadStateStalled || state == ZFPlayerLoadStatePrepare) && videoPlayer.currentPlayerManager.isPlaying) {
  63. [self.activity startAnimating];
  64. } else {
  65. [self.activity stopAnimating];
  66. }
  67. }
  68. - (void)gestureSingleTapped:(ZFPlayerGestureControl *)gestureControl {
  69. if (self.player.currentPlayerManager.isPlaying) {
  70. [self.player.currentPlayerManager pause];
  71. self.playBtn.hidden = NO;
  72. } else {
  73. [self.player.currentPlayerManager play];
  74. self.playBtn.hidden = YES;
  75. }
  76. if (self.ctrEvent) {
  77. self.ctrEvent();
  78. }
  79. }
  80. -(void)ctrVideoPlay:(BOOL)isPlay; {
  81. if (isPlay) {
  82. [self.player.currentPlayerManager play];
  83. self.playBtn.hidden = YES;
  84. }else{
  85. [self.player.currentPlayerManager pause];
  86. self.playBtn.hidden = NO;
  87. }
  88. }
  89. /// 手势筛选,返回NO不响应该手势
  90. - (BOOL)gestureTriggerCondition:(ZFPlayerGestureControl *)gestureControl gestureType:(ZFPlayerGestureType)gestureType gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer touch:(nonnull UITouch *)touch {
  91. if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
  92. if (gestureRecognizer == gestureControl.singleTap && !self.player.isFullScreen) {
  93. return YES;
  94. }
  95. return NO;
  96. }
  97. return YES;
  98. }
  99. - (void)setPlayer:(ZFPlayerController *)player {
  100. _player = player;
  101. }
  102. - (void)showCoverViewWithUrl:(NSString *)coverUrl {
  103. //[self.player.currentPlayerManager.view.coverImageView setImageWithURLString:coverUrl placeholder:[UIImage imageNamed:@"img_video_loading"]];
  104. }
  105. #pragma mark - getter
  106. - (ZFLoadingView *)activity {
  107. if (!_activity) {
  108. _activity = [[ZFLoadingView alloc] init];
  109. _activity.hidesWhenStopped = YES;
  110. _activity.animType = ZFLoadingTypeFadeOut;
  111. }
  112. return _activity;
  113. }
  114. - (UIButton *)playBtn {
  115. if (!_playBtn) {
  116. _playBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  117. _playBtn.userInteractionEnabled = NO;
  118. [_playBtn setImage:[UIImage imageNamed:@"icon_play_pause"] forState:UIControlStateNormal];
  119. _playBtn.hidden = YES;
  120. }
  121. return _playBtn;
  122. }
  123. @end