
macOS 設(shè)置意圖在構(gòu)建由 SwiftUI 的Settings場(chǎng)景支持的 macOS 設(shè)置窗口時(shí)使用。核心模式在App中聲明 Settings 場(chǎng)景并且只在 macOS 上編譯。將設(shè)置內(nèi)容保留在專(zhuān)用的根視圖SettingsView中并用AppStorage驅(qū)動(dòng)數(shù)值。有多個(gè)類(lèi)別時(shí)用TabView分組設(shè)置分區(qū)。在每個(gè)標(biāo)簽頁(yè)內(nèi)使用Form保持控件對(duì)齊且可訪(fǎng)問(wèn)。使用OpenSettingsAction或SettingsLink作為應(yīng)用內(nèi)打開(kāi)設(shè)置窗口的入口。示例設(shè)置場(chǎng)景mainstructMyApp:App{varbody:someScene{WindowGroup{ContentView()}#ifos(macOS)Settings{SettingsView()}#endif}}示例帶標(biāo)簽頁(yè)的設(shè)置視圖MainActorstructSettingsView:View{AppStorage(showPreviews)privatevarshowPreviewstrueAppStorage(fontSize)privatevarfontSize12.0varbody:someView{TabView{Form{Toggle(Show Previews,isOn:$showPreviews)Slider(value:$fontSize,in:9...96){Text(Font Size (\(fontSize,specifier:%.0f)pts))}}.tabItem{Label(General,systemImage:gear)}Form{Toggle(Enable Advanced Mode,isOn:.constant(false))}.tabItem{Label(Advanced,systemImage:star)}}.scenePadding().frame(maxWidth:420,minHeight:240)}}避免導(dǎo)航除非確實(shí)需要深層推入式導(dǎo)航否則避免將SettingsView包裹在NavigationStack中。優(yōu)先使用標(biāo)簽頁(yè)或分區(qū)Settings 已經(jīng)作為獨(dú)立窗口呈現(xiàn)應(yīng)保持扁平感。如果必須顯示層級(jí)式設(shè)置使用帶側(cè)邊欄類(lèi)別列表的單個(gè)NavigationSplitView。陷阱不要復(fù)用僅 iOS 的設(shè)置布局全屏堆棧、重度工具欄流程。避免在Form內(nèi)部使用大型自定義視圖層級(jí)保持行聚焦且可訪(fǎng)問(wèn)。