diff --git a/Sources/MiniPlayerApp.swift b/Sources/MiniPlayerApp.swift index 587fc85..e5b5007 100644 --- a/Sources/MiniPlayerApp.swift +++ b/Sources/MiniPlayerApp.swift @@ -241,6 +241,15 @@ struct PlayerContentView: View { } } + private func setWindowTitleBarVisible(_ visible: Bool) { + guard let win = NSApplication.shared.windows.first(where: { $0.isVisible }) else { return } + win.titlebarAppearsTransparent = !visible + win.titleVisibility = visible ? .visible : .hidden + win.standardWindowButton(.closeButton)?.isHidden = !visible + win.standardWindowButton(.miniaturizeButton)?.isHidden = !visible + win.standardWindowButton(.zoomButton)?.isHidden = !visible + } + var body: some View { ZStack(alignment: .topLeading) { Color.black.ignoresSafeArea() @@ -318,6 +327,9 @@ struct PlayerContentView: View { } } } + .onHover { hovering in + setWindowTitleBarVisible(hovering) + } .onAppear { // 初始状态:标题栏完全隐藏(含红绿灯按钮) DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { @@ -337,28 +349,6 @@ struct PlayerContentView: View { hideTimer?.invalidate() } } - .overlay(alignment: .top) { - // 标题栏悬停检测:鼠标进入显示标题栏,退出隐藏 - Color.clear - .frame(height: 28) - .contentShape(Rectangle()) - .onHover { hovering in - guard let win = NSApplication.shared.windows.first(where: { $0.isVisible }) else { return } - if hovering { - win.titlebarAppearsTransparent = false - win.titleVisibility = .visible - win.standardWindowButton(.closeButton)?.isHidden = false - win.standardWindowButton(.miniaturizeButton)?.isHidden = false - win.standardWindowButton(.zoomButton)?.isHidden = false - } else { - win.titleVisibility = .hidden - win.titlebarAppearsTransparent = true - win.standardWindowButton(.closeButton)?.isHidden = true - win.standardWindowButton(.miniaturizeButton)?.isHidden = true - win.standardWindowButton(.zoomButton)?.isHidden = true - } - } - } .onDisappear { hideTimer?.invalidate() }