如何在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
相关产品推荐
相关产品推荐

