Code Repo: Github - VisionOS Workshop
在 窗口,空间容器和空间 中我们了解了如何在 visionOS 中打开新的窗口。但在默认的实现中,无论是最初的导航窗口还是后续打开的新窗口,它们的大小和位置未必满足需求。
为了控制窗口的位置和尺寸,需要通过 modifier 控制初始的窗口位置。
二维窗口(Window)
初始情况
初始 visionOS 项目页面如下,有一个ContentView
,其中包含了一个 3D 的模型和一个按钮。并在 App 中,定义了一个WindowGroup
来渲染ContentView
。在 visionOS 中,默认会打开 App 类中定义的第一个 Scene,这里就是ContentView
。
// PositionAndSizeApp.swift
@main
struct PositionAndSizeApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
这时,窗口的行为:
- 初始状态:打开的面积太大
- 缩放行为:可以任意缩放,太大了内容偏小,太小了会裁切(clipping)掉部分内容
理解概念
首先需要先理解 View 和 Window 的关系,
View: A type that represents part of your app’s user interface.
Windows: Display user interface