fix: set window background to black
This commit is contained in:
parent
d62a3f79c1
commit
4879f56ef1
@ -125,6 +125,43 @@ struct MiniPlayerApp: App {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - AVPlayerLayer 直接渲染(无内置控制栏)
|
||||
struct PlayerLayerView: NSViewRepresentable {
|
||||
let player: AVPlayer
|
||||
|
||||
func makeNSView(context: Context) -> NSView {
|
||||
let view = PlayerLayerHostView()
|
||||
view.playerLayer.player = player
|
||||
view.playerLayer.videoGravity = .resizeAspect
|
||||
return view
|
||||
}
|
||||
|
||||
func updateNSView(_ nsView: NSView, context: Context) {
|
||||
if let host = nsView as? PlayerLayerHostView {
|
||||
host.playerLayer.player = player
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class PlayerLayerHostView: NSView {
|
||||
let playerLayer = AVPlayerLayer()
|
||||
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
wantsLayer = true
|
||||
layer = playerLayer
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func layout() {
|
||||
super.layout()
|
||||
playerLayer.frame = bounds
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - BricksView wrapper
|
||||
struct BricksAppView: View {
|
||||
@ObservedObject var bridge: PlayerBridge
|
||||
@ -147,15 +184,10 @@ struct BricksAppView: View {
|
||||
|
||||
var body: some View {
|
||||
ZStack(alignment: .topLeading) {
|
||||
// Bricks 渲染视频播放器(占满全屏)
|
||||
if let json = jsonString {
|
||||
BricksView(json: json, engine: engine)
|
||||
} else {
|
||||
ProgressView("Loading UI...")
|
||||
.task {
|
||||
jsonString = loadJSONString()
|
||||
}
|
||||
}
|
||||
Color.black.ignoresSafeArea()
|
||||
// 直接用 AVPlayerLayer 渲染视频(彻底绕过 AVPlayerView 内置控制栏)
|
||||
PlayerLayerView(player: bridge.player)
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
|
||||
// 左上角应用图标 — 点击切换控制栏
|
||||
MiniPlayerIcon()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user