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

关于VisionOS各功能组件使用单位的技术咨询

VisionOS 组件单位区分指南

2D 界面组件(逻辑像素为单位)

这类组件沿用 iOS/macOS 的 2D 界面单位体系,以逻辑像素作为基准:

  • WindowGroups:标准 2D 窗口的所有布局属性(如 frame、padding),以及 GeometryReader 读取的尺寸值,均使用逻辑像素,与 iOS 完全一致。
  • GeometryReader:仅作用于 2D 空间,读取的尺寸、位置信息单位为逻辑像素,用于适配 2D 界面布局。
  • Volumetric Windows 内的 2D 内容:在 Volumetric 窗口中嵌入的 SwiftUI 2D 视图,其布局单位仍为逻辑像素,不受窗口 3D 空间单位影响。

3D/沉浸式空间组件(米为单位)

这类组件基于真实物理空间尺度,以米作为单位:

  • Immersive Spaces:整个沉浸式空间的坐标系以米为基准,所有 3D 元素的位置、尺寸均遵循真实世界尺度。
  • GeometryReader3D:读取 3D 空间中的尺寸与位置信息,单位为米,用于适配 3D 场景布局。
  • RealityView 中的 RealityKit 实体:RealityView 内的 Entity 对象,其 position、scale 等属性单位均为米,对应真实物理空间的位置。

易混淆场景说明

  • Volumetric Windows 双重单位:窗口本身的 3D 占位属性(如大小、空间位置)用米,比如设置窗口大小为 CGSize(width: 0.5, height: 0.3);但窗口内部的 2D SwiftUI 视图布局仍用逻辑像素,比如给 Text 设置 .frame(width: 200)。
  • RealityView 内的两种 position:
    • 若设置的是 RealityKit Entity 的 position,单位为米;
    • 若设置的是嵌入 RealityView 的 SwiftUI 视图的 position,单位为逻辑像素。
      示例代码:
    RealityView { content in
        // Entity 的 position 用米
        let entity = Entity()
        entity.position = SIMD3<Float>(0, 1, -2)
        content.add(entity)
        
        // 嵌入的 SwiftUI 视图的 position 用逻辑像素
        content.add(Text("Hello").position(x: 100, y: 50))
    }
    

内容的提问来源于stack exchange,提问作者Code on the Rocks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:52:08