• 首页
  • 博客
  • 项目
  • 留言墙

微信公众号

喜欢我的内容的话不妨关注公众号获取最新动态 🫶

© 2025 • 5km • Fork 自cali.so

首页博客项目留言墙
总浏览量 7.2万
最近访客来自 Ashburn, US🇺🇸
  • 背景
  • 最小可行方案(精简示例)
  • Zipic 中的实际写法(聚焦关键差异)
  • 最终效果
  • 踩坑 & 排查清单
  • 结语
macOS 开发 - macOS 26 中隐藏主窗口标题栏
2025/08/13macOS 开发

macOS 开发 - macOS 26 中隐藏主窗口标题栏

在最新的 macOS 里,仅仅 .windowStyle(.hiddenTitleBar) 有时不够✨。把窗口容器背景设为透明:containerBackground(.clear, for: .window),或再配上必要的 toolbar 调整🛠️,才能真正做到“无标题栏”🎯。

160次点击2分钟阅读

背景

升级到 macOS 26 与 Xcode 16 后,我在适配 Zipic 的主窗口上遇到一个微妙变化:

  • 传统做法 Window { ... }.windowStyle(.hiddenTitleBar) 在某些布局下无法完全去掉标题栏的“背板/留白”。
  • 栈内如果还有 toolbar 的标题或背景,它会“顽强地”把顶部那一条视觉层带回来。
标题栏无法隐藏的 zipic 主窗口

解决关键在于:为整个窗口容器设置透明背景,让内容真正延伸到窗口最上缘。

最小可行方案(精简示例)

上面保留了 .hiddenTitleBar,但“真正让内容通顶的是” .containerBackground(.clear, for: .window)。

Zipic 中的实际写法(聚焦关键差异)

在 Zipic 的主窗口里,我们对 macOS 15 及以上 增加了容器背景透明:

此改动就是触发“通顶”的关键;其余如 toolbar(removing: .title)、toolbarBackgroundVisibility(.hidden, for: .windowToolbar) 可根据你是否使用到 NavigationSplitView、.navigationTitle 再按需加。

最终效果

完美隐藏标题栏的 Zipic 主窗口

踩坑 & 排查清单

  • 把修饰符放在创建该窗口的 Scene 上(Window/WindowGroup),别贴错层级。
  • 界面里若存在隐式的 toolbar 标题(如 NavigationSplitView 默认提供的),可移除:.toolbar(removing: .title)。
  • 去掉标题栏后,启用背景拖拽:.windowBackgroundDragBehavior(.enabled),否则用户可能无处拖动。
  • 预览不一定反映最终外观,以真机/真应用运行为准。

结语

SwiftUI 在 macOS 这两年给了更多“窗口级”的能力。换句话说:标题栏不再是“你改不动的那条线”。用好 containerBackground(for: .window) 与 toolbar 系列 API,你可以更容易实现视觉统一、半透明毛玻璃、定制化的悬浮窗体验。

相关文章

macOS 开发 - 使用 Sparkle 轻松实现 App 更新管理

2025/09/26macOS 开发3157分钟阅读

macOS 开发 - 创建 SwiftUI + AppKit 状态栏应用(popover视图)

2025/08/19macOS 开发2717分钟阅读

macOS 开发 - 获取与 Finder 一致的文件大小

2025/01/02macOS 开发1724分钟阅读