VisionOS-UI-Framework
Layouts spatiaux, un carrousel, la gestion des espaces immersifs et une manipulation bornée pour visionOS, avec SwiftUI et RealityKit.
Licence: MIT
Un package Swift sans dépendance (module VisionUI) pour visionOS 2, iOS 18 et macOS 15. Cinq layouts placent des vues SwiftUI et des entités RealityKit en 3D à partir des mêmes données, un coordinator ouvre et ferme les espaces immersifs une requête à la fois, et un état de type valeur maintient les objets glissés, pincés et tournés dans les limites que vous définissez. Sur iOS et macOS, les layouts sont dessinés comme vus de face, afin que le même code s'y exécute aussi.
Fonctionnalités
- Cinq layouts (arc, ring, grid, sphere, helix) qui renvoient une position en mètres et une orientation par élément, pour les vues SwiftUI avec SpatialLayoutView et pour les entités RealityKit avec arrangeChildren(using:)
- SpatialCarousel : un anneau de vues tourné par un drag qui se stabilise sur la vue la plus proche, avec un binding de sélection, une action adjustable VoiceOver et le support de Reduce Motion
- ImmersiveSpaceCoordinator refuse une seconde requête pendant une transition, ferme un espace avant d'en ouvrir un autre, ignore les réponses tardives des requêtes remplacées et suit le système quand un espace est fermé avec la Digital Crown
- ManipulationState maintient un objet à l'intérieur d'une boîte et d'une plage d'échelle, avec une rotation libre, verticale ou verrouillée, un snapping du yaw et une valeur de départ par geste
- SpatialCard, une toolbar qui devient un ornament sur visionOS, et des zones tactiles dimensionnées selon les guidelines d'Apple (60 pt sur visionOS, 44 sur iOS, 28 sur macOS)
- Vérifications des entrées sur chaque API publique : les comptages plafonnés à 4096 éléments, les longueurs à 10 km, et les arguments NaN ou infinis retombent sur des valeurs par défaut documentées
- 97 tests Swift Testing s'exécutent sur macOS et un simulateur iPhone ; 87 d'entre eux, tous sauf les tests de pixels, s'exécutent aussi sur un simulateur visionOS
- Catalogue DocC avec quatre articles et l'app d'exemple SpatialGallery pour visionOS, iOS et macOS ; les exemples du README sont compilés à la fois par l'app et par les tests
Démarrage rapide
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}Installation
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]Captures d'écran






Chronologie
Dépôt ouvert ; la majeure partie de son premier mois a été consacrée aux pages de documentation et aux workflows
v1.0.0 étiquetée ; son manifest déclarait .visionOS(.v1_0), une version de plateforme qui n'existe pas, si bien que Swift Package Manager ne pouvait pas la résoudre
Les composants ont été supprimés et le package réduit à du code espace réservé
v2.0.0 : espaces réservés supprimés et package réécrit de zéro sous le nom VisionUI, avec cinq layouts spatiaux, un coordinator d'espace immersif, une manipulation bornée, 97 tests, DocC et une app d'exemple pour trois plateformes