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

如何在Mac Catalyst应用中保留分栏视图分隔栏配置?

Mac Catalyst 中保存 UISplitViewController 侧边栏宽度的实现方法

在Mac Catalyst里没法直接给UISplitViewController设置类似AppKit的autosaveName,但可以通过桥接到底层的NSSplitView实现宽度自动保存恢复的功能,具体操作如下:

核心实现逻辑

  • 仅针对Mac Catalyst环境处理,用条件编译隔离iOS代码
  • 获取UISplitViewController对应的底层NSSplitView实例,给它设置唯一的自动保存名称,系统会自动负责保存用户调整后的宽度,重启应用时自动恢复

代码示例(Swift)

在你的UISplitViewController子类中,重写viewDidLoad方法:

import UIKit
import AppKit // Catalyst环境下可直接导入AppKit

class MainSplitViewController: UISplitViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        #if targetEnvironment(macCatalyst)
        // 强转获取底层的NSSplitView实例
        if let splitView = view as? NSSplitView {
            // 设置唯一的自动保存名称,避免和其他组件冲突
            splitView.autosaveName = "MainAppSidebarSplitView"
            // 可选:设置初始侧边栏宽度,覆盖默认值(仅首次启动生效)
            splitView.setPosition(200, ofDividerAt: 0)
        }
        #endif
    }
}

注意事项

  • autosaveName必须是唯一字符串,否则会和其他应用或组件的保存数据冲突
  • 初始宽度设置仅在用户第一次打开应用时生效,之后会优先加载用户调整后的保存值
  • 条件编译块#if targetEnvironment(macCatalyst)可保证代码不会在iOS平台编译报错

内容的提问来源于stack exchange,提问作者Jordan H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:46:03