CNLiveShortVideoControlView.swift
4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//
// CNLiveShortVideoControlView.swift
// metaCode
//
// Created by open on 2024/1/5.
//
import Foundation
import ZFPlayer
import Kingfisher
class CNLiveShortVideoControlView: UIView, ZFPlayerMediaControl {
weak var player: ZFPlayerController?
lazy var playBtn: UIButton = {
let button = UIButton(type: .custom)
button.isUserInteractionEnabled = false
button.setImage(UIImage(named: "short_video_play"), for: .normal)
return button
}()
lazy var sliderView: ZFSliderView = {
let sliderView = ZFSliderView()
sliderView.maximumTrackTintColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.2)
sliderView.minimumTrackTintColor = UIColor.white
sliderView.bufferTrackTintColor = UIColor.lightGray
sliderView.sliderHeight = 1
sliderView.isHideSliderBlock = false
return sliderView
}()
var bufferComplete: Bool! = false
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(playBtn)
addSubview(sliderView)
}
deinit {
print("控制界面销毁了")
}
override func layoutSubviews() {
super.layoutSubviews()
var min_x: CGFloat = 0
var min_y: CGFloat = 0
var min_w: CGFloat = 0
var min_h: CGFloat = 0
let min_view_w = self.zf_width
let min_view_h = self.zf_height
min_w = 100
min_h = 100
self.playBtn.frame = CGRect(x: min_x, y: min_y, width: min_w, height: min_h)
self.playBtn.center = self.center
min_x = 20
min_y = min_view_h - (60 + get_system_tabbar_ui_offsetHeight())
min_w = min_view_w - 40
min_h = 1
self.sliderView.frame = CGRect(x: min_x, y: min_y, width: min_w, height: min_h)
}
public func resetControlView() {
self.playBtn.isHidden = true
self.sliderView.value = 0
self.sliderView.bufferValue = 0
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func videoPlayer(_ videoPlayer: ZFPlayerController, loadStateChanged state: ZFPlayerLoadState) {
if (state == .stalled) && videoPlayer.currentPlayerManager.isPlaying && !bufferComplete {
self.sliderView.startAnimating()
} else {
self.sliderView.stopAnimating()
}
}
func videoPlayer(_ videoPlayer: ZFPlayerController, currentTime: TimeInterval, totalTime: TimeInterval) {
self.sliderView.value = videoPlayer.progress
}
func videoPlayer(_ videoPlayer: ZFPlayerController, bufferTime: TimeInterval) {
self.sliderView.bufferValue = videoPlayer.bufferProgress
}
func videoPlayer(_ videoPlayer: ZFPlayerController) {
videoPlayer.currentPlayerManager.play()
self.bufferComplete = true
}
func videoPlayer(_ videoPlayer: ZFPlayerController, reachabilityChanged status: ZFReachabilityStatus) {
if status == .reachableVia2G
|| status == .reachableVia3G
|| status == .reachableVia4G
|| status == .reachableVia5G {
showMessage(message: "正在使用流量播放")
}
}
func gestureSingleTapped(_ gestureControl: ZFPlayerGestureControl) {
if (self.player?.currentPlayerManager.isPlaying == true) {
self.player?.currentPlayerManager.pause()
self.playBtn.isHidden = false
self.playBtn.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseIn, animations: { [weak self] in
guard let self = self else { return }
self.playBtn.transform = .identity
}, completion: nil)
} else {
self.player?.currentPlayerManager.play()
self.playBtn.isHidden = true
}
}
func showCoverView(withUrl coverUrl: String) {
self.player?.currentPlayerManager.view.coverImageView.kf.setImage(with: URL(string: coverUrl), placeholder: UIImage.imageWithColor(color: UIColor.black, size: UIScreen.main.bounds.size))
}
}