ZFDouYinControlView.m 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. //
  2. // ZFDouYinControlView.m
  3. // ZFPlayer_Example
  4. //
  5. // Created by 任子丰 on 2018/6/4.
  6. // Copyright © 2018年 紫枫. All rights reserved.
  7. //
  8. #import "ZFDouYinControlView.h"
  9. #import <ZFPlayer/UIView+ZFFrame.h>
  10. #import <ZFPlayer/UIImageView+ZFCache.h>
  11. #import <ZFPlayer/ZFUtilities.h>
  12. #import "ZFLoadingView.h"
  13. #import <ZFPlayer/ZFSliderView.h>
  14. #import <ZFPlayer/ZFPlayerController.h>
  15. @interface ZFDouYinControlView ()
  16. @property (nonatomic, strong) UIButton *playBtn;
  17. @property (nonatomic, strong) ZFSliderView *sliderView;
  18. @end
  19. @implementation ZFDouYinControlView
  20. @synthesize player = _player;
  21. - (instancetype)init {
  22. self = [super init];
  23. if (self) {
  24. [self addSubview:self.playBtn];
  25. [self addSubview:self.sliderView];
  26. [self resetControlView];
  27. }
  28. return self;
  29. }
  30. - (void)layoutSubviews {
  31. [super layoutSubviews];
  32. CGFloat min_x = 0;
  33. CGFloat min_y = 0;
  34. CGFloat min_w = 0;
  35. CGFloat min_h = 0;
  36. CGFloat min_view_w = self.zf_width;
  37. CGFloat min_view_h = self.zf_height;
  38. min_w = 100;
  39. min_h = 100;
  40. self.playBtn.frame = CGRectMake(min_x, min_y, min_w, min_h);
  41. self.playBtn.center = self.center;
  42. min_x = 0;
  43. min_y = min_view_h - 80;
  44. min_w = min_view_w;
  45. min_h = 1;
  46. self.sliderView.frame = CGRectMake(min_x, min_y, min_w, min_h);
  47. }
  48. - (void)resetControlView {
  49. self.playBtn.hidden = YES;
  50. self.sliderView.value = 0;
  51. self.sliderView.bufferValue = 0;
  52. }
  53. /// 加载状态改变
  54. - (void)videoPlayer:(ZFPlayerController *)videoPlayer loadStateChanged:(ZFPlayerLoadState)state {
  55. if ((state == ZFPlayerLoadStateStalled || state == ZFPlayerLoadStatePrepare) && videoPlayer.currentPlayerManager.isPlaying) {
  56. [self.sliderView startAnimating];
  57. } else {
  58. [self.sliderView stopAnimating];
  59. }
  60. }
  61. /// 播放进度改变回调
  62. - (void)videoPlayer:(ZFPlayerController *)videoPlayer currentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime {
  63. self.sliderView.value = videoPlayer.progress;
  64. }
  65. - (void)videoPlayer:(ZFPlayerController *)videoPlayer bufferTime:(NSTimeInterval)bufferTime {}
  66. - (void)gestureSingleTapped:(ZFPlayerGestureControl *)gestureControl {
  67. if (self.player.currentPlayerManager.isPlaying) {
  68. [self.player.currentPlayerManager pause];
  69. self.playBtn.hidden = NO;
  70. self.playBtn.transform = CGAffineTransformMakeScale(1.5f, 1.5f);
  71. [UIView animateWithDuration:0.2f delay:0
  72. options:UIViewAnimationOptionCurveEaseIn animations:^{
  73. self.playBtn.transform = CGAffineTransformIdentity;
  74. } completion:nil];
  75. } else {
  76. [self.player.currentPlayerManager play];
  77. self.playBtn.hidden = YES;
  78. }
  79. }
  80. - (void)setPlayer:(ZFPlayerController *)player {
  81. _player = player;
  82. }
  83. - (void)showCoverViewWithUrl:(NSString *)coverUrl {
  84. [self.player.currentPlayerManager.view.coverImageView setImageWithURLString:coverUrl placeholder:[UIImage imageNamed:@"img_video_loading"]];
  85. }
  86. #pragma mark - getter
  87. - (UIButton *)playBtn {
  88. if (!_playBtn) {
  89. _playBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  90. _playBtn.userInteractionEnabled = NO;
  91. [_playBtn setImage:[UIImage imageNamed:@"icon_play_pause"] forState:UIControlStateNormal];
  92. }
  93. return _playBtn;
  94. }
  95. - (ZFSliderView *)sliderView {
  96. if (!_sliderView) {
  97. _sliderView = [[ZFSliderView alloc] init];
  98. _sliderView.maximumTrackTintColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.2];
  99. _sliderView.minimumTrackTintColor = [UIColor whiteColor];
  100. _sliderView.bufferTrackTintColor = [UIColor clearColor];
  101. _sliderView.sliderHeight = 1;
  102. _sliderView.isHideSliderBlock = NO;
  103. }
  104. return _sliderView;
  105. }
  106. @end