3 窗口
4 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/windows
3 窗口
在窗口或一组窗口中显示界面内容。
概述
在应用界面中呈现视图层级最常见的方式是使用 WindowGroup,它会依据平台产生相应的行为与外观。

在支持多个窗口的平台上,人们可以从同一个组同时打开多个窗口。每个窗口都基于相同的根视图定义,但各自保留自己的视图状态。在某些平台上,你还可以用 Window 场景类型,为应用界面补充一个单实例窗口。
通过向窗口声明添加场景修饰符来配置窗口,例如 windowStyle(_:) 或 defaultPosition(_:)。你也可以给视图层级中的某个视图添加 presentedWindowStyle(_:) 视图修饰符,以此指明如何配置从该视图层级呈现的新窗口。
关于设计指导,参见 Human Interface Guidelines 中的窗口。
基础
- 在 macOS 中自定义窗口样式与状态恢复行为 —— 配置应用窗口在 macOS 中的外观与行为,提供更有吸引力、更连贯的体验。
- 为 SwiftUI 应用引入多个窗口 —— 通过响应状态变化来组合丰富的视图,并在 iPadOS 和 macOS 上定制应用的场景呈现与行为。
创建窗口
- WindowGroup —— 呈现一组结构相同的窗口的场景。
- Window —— 在单个唯一窗口中呈现其内容的场景。
- UtilityWindow —— 一种专门的窗口场景,为应用主要场景的内容提供辅助工具。
- WindowStyle —— 对窗口外观与交互方式的规范说明。
- windowStyle(_:) —— 设置由该场景创建的窗口的样式。
设置关联工具栏的样式
- windowToolbarStyle(_:) —— 设置该场景内所定义工具栏的样式。
- windowToolbarLabelStyle(_:) —— 设置工具栏中各项的标签样式,并启用用户自定义。
- windowToolbarLabelStyle(fixed:) —— 设置工具栏中各项的标签样式。
- WindowToolbarStyle —— 对窗口工具栏外观与行为的规范说明。
打开窗口
- 呈现窗口与空间 —— 打开和关闭构成应用界面的各个场景。
- supportsMultipleWindows —— 一个布尔值,表示当前平台是否支持打开多个窗口。
- openWindow —— 存储在视图环境中的窗口呈现动作。
- OpenWindowAction —— 呈现窗口的动作。
- PushWindowAction —— 在调用该动作的窗口位置打开所请求窗口的动作。
关闭窗口
- dismissWindow —— 存储在视图环境中的窗口关闭动作。
- DismissWindowAction —— 关闭与某个特定场景关联的窗口的动作。
- dismiss —— 关闭当前呈现的动作。
- DismissAction —— 关闭呈现的动作。
- DismissBehavior —— 以编程方式关闭窗口的行为。
调整窗口大小
- 定位与调整窗口大小 —— 影响应用所呈现窗口的初始几何形状。
- defaultSize(_:) —— 设置窗口的默认大小。
- defaultSize(width:height:) —— 设置窗口的默认宽度和高度。
- defaultSize(width:height:depth:) —— 设置体(volumetric)窗口的默认大小。
- defaultSize(_:in:) —— 设置体窗口的默认大小。
- defaultSize(width:height:depth:in:) —— 设置体窗口的默认大小。
- windowResizability(_:) —— 设置窗口使用的可调整大小方式。
- WindowResizability —— 窗口的可调整大小特性。
- windowIdealSize(_:) —— 指定从该场景派生的窗口在缩放时应如何确定大小。
- WindowIdealSize —— 定义窗口缩放时所应使用大小的类型。
定位窗口
- defaultPosition(_:) —— 设置窗口的默认位置。
- WindowLevel —— 窗口的层级。
- windowLevel(_:) —— 设置该场景的窗口层级。
- WindowLayoutRoot —— 表示窗口根内容的代理。
- WindowPlacement —— 表示窗口偏好的大小与位置的类型。
- defaultWindowPlacement(_:) —— 定义一个用于确定窗口默认放置位置的函数。
- windowIdealPlacement(_:) —— 提供一个函数,用于确定某个场景的窗口缩放时应采用的放置位置。
- WindowPlacementContext —— 表示用于调整和定位窗口的上下文信息的类型。
- WindowProxy —— 应用中某个已打开窗口的代理。
- DisplayProxy —— 提供显示硬件相关信息的类型。
配置窗口可见性
- WindowVisibilityToggle —— 用于切换窗口可见性的专门按钮。
- defaultLaunchBehavior(_:) —— 设置该场景的默认启动行为。
- restorationBehavior(_:) —— 设置该场景的恢复行为。
- SceneLaunchBehavior —— 场景的启动行为。
- SceneRestorationBehavior —— 场景的恢复行为。
- persistentSystemOverlays(_:) —— 设置覆盖在应用之上、非瞬态系统视图的偏好可见性。
- windowToolbarFullScreenVisibility(_:) —— 配置窗口进入全屏模式时窗口工具栏的可见性。
- WindowToolbarFullScreenVisibility —— 窗口工具栏相对于全屏模式的可见性。
管理窗口行为
- WindowManagerRole —— 定义场景窗口在受管理的窗口上下文(例如全屏模式和「舞台管理器」)中如何表现的选项。
- windowManagerRole(_:) —— 配置从
self派生的窗口在参与受管理的窗口上下文(例如全屏或「舞台管理器」)时的角色。 - WindowInteractionBehavior —— 用于启用和禁用窗口交互行为的选项。
- windowDismissBehavior(_:) —— 配置包含
self的窗口的关闭功能。 - windowFullScreenBehavior(_:) —— 配置包含
self的窗口的全屏功能。 - windowMinimizeBehavior(_:) —— 配置包含
self的窗口的最小化功能。 - windowResizeBehavior(_:) —— 配置包含
self的窗口的调整大小功能。 - windowBackgroundDragBehavior(_:) —— 配置通过窗口背景拖动窗口时的行为。
- allowsWindowActivationEvents() —— 配置该视图层级中的手势,使其能处理激活所在窗口的事件。
- allowsWindowActivationEvents(_:) —— 配置该视图层级中的手势能否处理激活所在窗口的事件。
与立体空间交互
- onVolumeViewpointChange(updateStrategy:initial:_:) —— 添加当立体空间的视点发生变化时要执行的动作。
- supportedVolumeViewpoints(_:) —— 指定立体空间中窗口栏和装饰件支持哪些视点。
- VolumeViewpointUpdateStrategy —— 描述何时应当调用传给 onVolumeViewpointChange(updateStrategy:initial:_:) 的动作的类型。
- Viewpoint3D —— 描述某物正从哪个方向被观察的类型。
- SquareAzimuth —— 描述某物在水平面上从哪个方向被观察、并对齐到 4 个方向的类型。
- WorldAlignmentBehavior —— 表示场景世界对齐行为的类型。
- volumeWorldAlignment(_:) —— 指定立体空间在世界中移动时应如何对齐。
- WorldScalingBehavior —— 指定窗口在世界上应具有的缩放行为。
- defaultWorldScaling(_:) —— 指定窗口的世界缩放行为。
- WorldScalingCompensation —— 表示返回的度量值是否会考虑动态缩放。
- worldTrackingLimitations —— 设备追踪用户周围环境的当前限制。
- WorldTrackingLimitation —— 表示追踪用户周围环境所存限制的结构体。
- SurfaceSnappingInfo —— 表示窗口场景吸附状态相关信息的类型。
已弃用的类型
- ControlActiveState —— 窗口中控件预期的活动外观。