macOS

macOS 原生应用的窗口与导航管理

SwiftUI 提供了 NavigationSplitView、NavigationStack、TabView 等多种导航容器,它们在 macOS、iPadOS 和 iOS 上的行为各有不同,组合方式也不止一种。 这篇文章整理了我在实际开发中对 macOS 原生应用导航管理的观察与总结,希望能帮助你在项目初期做出更清晰的架构选择。 创建三列应用 NavigationSplitView 是天然首选 如果你的应用始终需要三列结构——比如 Notes 的「文件夹 → 笔记列表 → 编辑器」,或 Mail 的「邮箱 → 邮件列表 → 邮件正文」——那么 NavigationSplitView 的三列形态就是最自然的方案: NavigationSplitView { // sidebar } content: { // 中间列 } detail: { // 详情列 } 在这种场景下,系统的原生体验非常稳定,toolbar、标题栏与分栏折叠行为都与系统预期一致,几乎不需要额外干预。 混合列数场景:谨慎切换容器形态 实际项目中更常见的情况是:
廖林

macOS|使用 HSplitView 分割应用窗口

SwiftUI 提供了 NavigationSplitView 和 inspector 修饰器,可以轻松创建跨平台的多区域窗口页面。这两个组件创建的 UI 非常接近 Keynote 应用的 UI 效果。 当时他们存在一些限制: * 在左右侧、顶部 Toolbar 强制添加分割线 * 强制添加折叠按钮,无法隐藏 * 会为不同区域默认添加背景色 如果想创建类似 Sketch、Eagle 或者 Linear 应用这样更加干净的 UI 界面,我们只能使用 HSplitView 或 HStack 来自定义分割窗口区域: 推荐使用 HSplitView 来实现窗口分割。但利弊总是相对的,你也会失去跨平台的能力。
廖林