// // SPPlayerControlView.swift // ShortPlay // // Created by 曾觉新 on 2025/4/9. // import UIKit class SPPlayerControlView: UIView { ///滑动进度条 var panProgressFinishBlock: ((_ progress: CGFloat) -> Void)? ///0-1 var progress: CGFloat = 0 { didSet { progressView.progress = progress } } private(set) lazy var progressView: SPPlayerProgressView = { let view = SPPlayerProgressView() view.panStart = { [weak self] in guard let self = self else { return } self.panProgressStart() } view.panChange = { [weak self] progress in guard let self = self else { return } self.panProgressChange(progress: progress) } view.panFinish = { [weak self] progress in guard let self = self else { return } self.panProgressFinish(progress: progress) } return view }() override init(frame: CGRect) { super.init(frame: frame) sp_setupUI() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } extension SPPlayerControlView { private func sp_setupUI() { addSubview(progressView) progressView.snp.makeConstraints { make in make.left.equalToSuperview().offset(10) make.centerX.equalToSuperview() make.bottom.equalToSuperview().offset(-20) make.height.equalTo(30) } } } extension SPPlayerControlView { ///滑动进度开始 private func panProgressStart() { // self.isHidden = true // screenProgressView.duration = self.player?.duration ?? 0 // screenProgressView.frame = self.window?.bounds ?? .zero // // self.window?.addSubview(screenProgressView) // // var point = self.progressView.convert(CGPoint(x: 0, y: 0), to: self.window) // point.y = point.y + self.progressView.size.height - self.progressView.lineWidth / 2 // // screenProgressView.point = point } ///滑动进度中 private func panProgressChange(progress: CGFloat) { // screenProgressView.progress = progress } ///滑动进度结束 private func panProgressFinish(progress: CGFloat) { // self.isHidden = false // screenProgressView.removeFromSuperview() self.panProgressFinishBlock?(progress) } }