Tous les paquets open source
PlateformeSwift

VisionOS-UI-Framework

Layouts spatiaux, un carrousel, la gestion des espaces immersifs et une manipulation bornée pour visionOS, avec SwiftUI et RealityKit.

3ÉtoilesDernière version: v2.0.0 · Mis à jour: 15 octobre 2026
Plateformes:visionOS 2iOS 18macOS 15

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

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}

Installation

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]

Captures d'écran

L'app d'exemple sur le simulateur Apple Vision Pro : cinq cartes en verre nommées d'après des planètes sur un arc qui se courbe vers le spectateur, les cartes extérieures plus proches et tournées vers le centre
La page du carrousel : la carte Mountains au premier plan, les cartes Arctic et City tournées à l'écart sur les côtés, et le texte Showing Mountains en dessous
La page des composants : deux cartes en verre, une petite étoile avec une zone tactile plus grande, et une toolbar avec des boutons retour, lecture et avance attachée sous la fenêtre
L'espace immersif : des sphères bleues et sarcelles réparties dans la pièce à différentes hauteurs, avec la fenêtre de la galerie affichant un bouton Hide Orbit
Diagrammes des layouts arc, ring, grid, sphere et helix vus du dessus et de face, avec des points pour les éléments et des flèches pour la direction que chacun regarde
Les mêmes diagrammes de layouts sur un fond sombre

Chronologie

  1. Dépôt ouvert ; la majeure partie de son premier mois a été consacrée aux pages de documentation et aux workflows

  2. 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

  3. Les composants ont été supprimés et le package réduit à du code espace réservé

  4. 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

Liens

Article associé

Lire l'article (English)