You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:54:11