控制层自动隐藏

This commit is contained in:
zeng 2025-08-02 10:55:04 +08:00
parent a22254bc39
commit a2dfc4aac5
4 changed files with 32 additions and 3 deletions

View File

@ -22,6 +22,8 @@ class BRExplorePlayerCell: BRPlayerListCell {
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
NotificationCenter.default.addObserver(self, selector: #selector(updateShortFavoriteStateNotification), name: BRVideoAPI.updateShortFavoriteStateNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(updateShortFavoriteStateNotification), name: BRVideoAPI.updateShortFavoriteStateNotification, object: nil)
self.player.controlAutomaticallyDisappear = false
} }
@MainActor required init?(coder: NSCoder) { @MainActor required init?(coder: NSCoder) {

View File

@ -14,4 +14,12 @@ class BRDetailPlayerCell: BRPlayerListCell {
return BRDetailControlView.self return BRDetailControlView.self
} }
override init(frame: CGRect) {
super.init(frame: frame)
self.player.controlAutomaticallyDisappear = true
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
} }

View File

@ -89,7 +89,7 @@ class BRPlayerListCell: BRCollectionViewCell, BRPlayerProtocol {
return BRPlayerControlView.self return BRPlayerControlView.self
} }
private lazy var player: BRPlayer = { private(set) lazy var player: BRPlayer = {
let player = BRPlayer(controlView: self.controlView) let player = BRPlayer(controlView: self.controlView)
player.playerView = self.playerView player.playerView = self.playerView
player.delegate = self player.delegate = self

View File

@ -33,6 +33,7 @@ class BRPlayer: NSObject {
private lazy var player: SJBaseVideoPlayer = { private lazy var player: SJBaseVideoPlayer = {
let player = SJBaseVideoPlayer() let player = SJBaseVideoPlayer()
player.delayInSecondsForHiddenPlaceholderImageView = 0
player.autoplayWhenSetNewAsset = false player.autoplayWhenSetNewAsset = false
player.resumePlaybackWhenAppDidEnterForeground = false player.resumePlaybackWhenAppDidEnterForeground = false
player.accurateSeeking = true player.accurateSeeking = true
@ -41,6 +42,7 @@ class BRPlayer: NSObject {
player.rotationManager?.isDisabledAutorotation = true player.rotationManager?.isDisabledAutorotation = true
player.controlLayerDataSource = self player.controlLayerDataSource = self
player.resumePlaybackWhenPlayerHasFinishedSeeking = false player.resumePlaybackWhenPlayerHasFinishedSeeking = false
player.pausedToKeepAppearState = true
return player return player
}() }()
@ -55,7 +57,9 @@ class BRPlayer: NSObject {
} }
} }
private(set) weak var br_controlView: BRPlayerControlProtocol?; private(set) weak var br_controlView: BRPlayerControlProtocol?
///
var controlAutomaticallyDisappear = true
var coverImageView: UIImageView? { var coverImageView: UIImageView? {
return self.player.presentView.placeholderImageView return self.player.presentView.placeholderImageView
@ -90,6 +94,7 @@ class BRPlayer: NSObject {
self.br_controlView = controlView self.br_controlView = controlView
setupPlayer() setupPlayer()
player.controlLayerNeedAppear()
} }
func setPlayUrl(url: String) { func setPlayUrl(url: String) {
@ -138,8 +143,22 @@ extension BRPlayer {
self.player.gestureController.supportedGestureTypes = .singleTap self.player.gestureController.supportedGestureTypes = .singleTap
self.player.gestureController.singleTapHandler = { [weak self] _, _ in self.player.gestureController.singleTapHandler = { [weak self] _, _ in
guard let self = self else { return } guard let self = self else { return }
if !self.player.isControlLayerAppeared {
self.player.controlLayerNeedAppear()
} else {
self.br_controlView?.singleTapEvent() self.br_controlView?.singleTapEvent()
} }
}
player.canAutomaticallyDisappear = { [weak self] player in
return self?.controlAutomaticallyDisappear ?? false
}
//
player.controlLayerAppearObserver.onAppearChanged = { [weak self] manager in
guard let self = self else { return }
self.controlView().isHidden = !manager.isAppeared
}
// //
self.player.playbackObserver.playbackDidFinishExeBlock = { [weak self] player in self.player.playbackObserver.playbackDidFinishExeBlock = { [weak self] player in