Todos los paquetes de código abierto
PlataformaSwift

VisionOS-UI-Framework

Layouts espaciales, un carousel, gestión de immersive space y manipulation acotada para visionOS, con SwiftUI y RealityKit.

3EstrellasÚltima versión: v2.0.0 · Actualizado: 15 de octubre de 2026
Plataformas:visionOS 2iOS 18macOS 15

Licencia: MIT

Un paquete Swift sin dependencias (módulo VisionUI) para visionOS 2, iOS 18 y macOS 15. Cinco layouts colocan views de SwiftUI y entities de RealityKit en 3D a partir de los mismos datos, un coordinator abre y cierra immersive spaces de una petición a la vez, y un state de value-type mantiene los objetos arrastrados, pellizcados y girados dentro de los límites que definas. En iOS y macOS los layouts se dibujan como se verían de frente, así que el mismo código también funciona ahí.

Características

  • Cinco layouts (arc, ring, grid, sphere, helix) que devuelven una posición en metros y una orientación por item, para views de SwiftUI con SpatialLayoutView y para entities de RealityKit con arrangeChildren(using:)
  • SpatialCarousel: un anillo de views que gira con un drag y se detiene en la view más cercana, con un selection binding, una adjustable action de VoiceOver y soporte para Reduce Motion
  • ImmersiveSpaceCoordinator rechaza una segunda petición durante una transición, cierra un space antes de abrir otro, ignora las respuestas tardías de peticiones reemplazadas y sigue al sistema cuando un space se cierra con la Digital Crown
  • ManipulationState mantiene un objeto dentro de una caja y un rango de escala, con rotación libre, vertical o bloqueada, yaw snapping y un valor inicial por gesture
  • SpatialCard, una toolbar que se convierte en ornament en visionOS, y hit targets dimensionados según las guidelines de Apple (60 pt en visionOS, 44 en iOS, 28 en macOS)
  • Comprobaciones de entrada en cada API pública: los counts limitados a 4096 items, las lengths a 10 km, y los argumentos NaN o infinitos recurren a valores por defecto documentados
  • 97 tests de Swift Testing se ejecutan en macOS y en un simulador de iPhone; 87 de ellos, todos menos los pixel tests, también se ejecutan en un simulador de visionOS
  • Catálogo DocC con cuatro artículos y la app de ejemplo SpatialGallery para visionOS, iOS y macOS; los samples del README son compilados tanto por la app como por los tests

Inicio rápido

swift
1import SwiftUI
2import VisionUI
3 
4struct ContentView: View {
5 let planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter"]
6 
7 var body: some View {
8 SpatialLayoutView(.arc(radius: 0.6, spacing: 0.17), planets, id: \.self) { planet in
9 SpatialCard {
10 Text(planet)
11 .font(.title)
12 }
13 }
14 }
15}

Instalación

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/VisionOS-UI-Framework.git

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/VisionOS-UI-Framework.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "VisionUI", package: "VisionOS-UI-Framework")
7 ])
8]

Capturas de pantalla

La app de ejemplo en el simulador de Apple Vision Pro: cinco glass cards con nombres de planetas sobre un arc que se curva hacia el espectador, con las cards exteriores más cerca y giradas hacia el centro
La página del carousel: la card Mountains al frente, las cards Arctic y City giradas hacia fuera en los lados, y el texto Showing Mountains debajo
La página de componentes: dos glass cards, una pequeña estrella con un área de tap más grande, y una toolbar con botones de retroceder, reproducir y avanzar adosada debajo de la ventana
El immersive space: esferas azules y verde-azuladas repartidas por la habitación a distintas alturas, con la ventana de la galería mostrando un botón Hide Orbit
Diagramas de los layouts arc, ring, grid, sphere y helix desde arriba y desde el frente, con puntos para los items y flechas para la dirección a la que mira cada uno
Los mismos diagramas de layout sobre un fondo oscuro

Cronología

  1. Repositorio abierto; la mayor parte de su primer mes se dedicó a páginas de documentación y workflows

  2. v1.0.0 etiquetada; su manifest declaraba .visionOS(.v1_0), una versión de plataforma que no existe, así que Swift Package Manager no podía resolverlo

  3. Los componentes se eliminaron y el paquete se redujo a código placeholder

  4. v2.0.0: los placeholders se eliminaron y el paquete se reescribió desde cero como VisionUI, con cinco layouts espaciales, un immersive space coordinator, manipulation acotada, 97 tests, DocC y una app de ejemplo para tres plataformas

Enlaces

Artículo relacionado

Leer el artículo (English)