ZFWeChatControlView.m 3.4 KB

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