控制层自动隐藏
This commit is contained in:
parent
a22254bc39
commit
a2dfc4aac5
@ -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) {
|
||||||
|
@ -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")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user