如何在macOS中使用Swift隐藏窗口顶部按钮栏?
解决macOS窗口标题栏与顶部按钮隐藏问题
我来帮你搞定这个问题!你想隐藏窗口的标题栏和顶部交通灯按钮,只保留内容区域,在macOS开发里确实有几个容易忽略的细节,咱们一步步排查调整:
1. 先确保你的设置函数被执行
你写了setVisibility函数,但如果没在应用启动时调用它,这些配置根本不会生效。记得在applicationDidFinishLaunching方法里触发它:
func applicationDidFinishLaunching(_ aNotification: Notification) { setVisibility() }
2. 修正窗口样式与属性的设置逻辑
直接把styleMask设为.borderless会覆盖原有样式,而且仅靠这一项没法完全隐藏标题栏相关元素。试试下面的组合配置:
func setVisibility(){ guard let window = self.window else { return } // 核心:隐藏标题栏(包含交通灯按钮) window.hidesTitleBar = true // 让标题栏完全透明(配合隐藏设置彻底消除痕迹) window.titlebarAppearsTransparent = true // 修改样式:移除标题栏样式,添加无边框样式 window.styleMask.remove(.titled) window.styleMask.insert(.borderless) // 可选:允许用户拖动窗口空白区域移动窗口(不需要可以删掉) window.isMovableByWindowBackground = true // 移除标题栏底部的分隔线 window.titlebarSeparatorStyle = .none }
关键细节说明
hidesTitleBar = true才是真正隐藏标题栏的核心设置,titlebarAppearsTransparent只是让标题栏透明,单独用它不会隐藏顶部按钮。- 用
styleMask.insert和remove修改样式,而不是直接赋值,能保留窗口的其他必要特性(比如如果需要可缩放,就不用移除.resizable样式)。
如果还是没生效,可以检查这两个点:
- 是不是Storyboard里给窗口设置了冲突的属性?比如手动勾选了“显示标题栏”选项。
- 你的ViewController约束有没有让内容没有填充整个窗口?导致看起来标题栏还在。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

