VisionOS-UI-Framework
Layouts espaciales, un carousel, gestión de immersive space y manipulation acotada para visionOS, con SwiftUI y RealityKit.
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
1import SwiftUI2import VisionUI3 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 in9 SpatialCard {10 Text(planet)11 .font(.title)12 }13 }14 }15}Instalación
Xcode (File › Add Package Dependencies…)
1https://github.com/muhittincamdali/VisionOS-UI-Framework.gitSwift Package Manager
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






Cronología
Repositorio abierto; la mayor parte de su primer mes se dedicó a páginas de documentación y workflows
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
Los componentes se eliminaron y el paquete se redujo a código placeholder
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