VisionOS-UI-Framework
Räumliche Layouts, ein Carousel, Immersive-Space-Handling und begrenzte Manipulation für visionOS – mit SwiftUI und RealityKit.
Lizenz: MIT
Ein abhängigkeitsfreies Swift-Package (Modul VisionUI) für visionOS 2, iOS 18 und macOS 15. Fünf Layouts platzieren SwiftUI-Views und RealityKit-Entities aus denselben Daten in 3D, ein Coordinator öffnet und schließt Immersive Spaces jeweils eine Anfrage nach der anderen, und ein Value-Type-State hält gezogene, gepinchte und gedrehte Objekte innerhalb der von Ihnen gesetzten Grenzen. Auf iOS und macOS werden die Layouts frontal gezeichnet, sodass derselbe Code auch dort läuft.
Funktionen
- Fünf Layouts (arc, ring, grid, sphere, helix), die eine Position in Metern und eine Ausrichtung pro Element liefern, für SwiftUI-Views mit SpatialLayoutView und für RealityKit-Entities mit arrangeChildren(using:)
- SpatialCarousel: ein Ring von Views, der sich per Drag drehen lässt und sich auf die nächstgelegene View einpendelt, mit Selection-Binding, einer VoiceOver-Adjustable-Action und Reduce-Motion-Unterstützung
- ImmersiveSpaceCoordinator lehnt eine zweite Anfrage während eines Übergangs ab, schließt einen Space, bevor er einen anderen öffnet, ignoriert verspätete Antworten ersetzter Anfragen und folgt dem System, wenn ein Space mit der Digital Crown geschlossen wird
- ManipulationState hält ein Objekt innerhalb einer Box und eines Skalierungsbereichs, mit freier, aufrechter oder gesperrter Rotation, Yaw-Snapping und einem Startwert pro Gesture
- SpatialCard, eine Toolbar, die auf visionOS zu einem Ornament wird, und Hit-Targets in den Größen nach Apples Guidelines (60 pt auf visionOS, 44 auf iOS, 28 auf macOS)
- Eingabeprüfungen auf jeder öffentlichen API: Anzahlen begrenzt auf 4096 Elemente, Längen auf 10 km, und NaN- oder unendliche Argumente fallen auf dokumentierte Standardwerte zurück
- 97 Swift-Testing-Tests laufen auf macOS und einem iPhone-Simulator; 87 davon, alle außer den Pixel-Tests, laufen auch auf einem visionOS-Simulator
- DocC-Katalog mit vier Artikeln und der Beispiel-App SpatialGallery für visionOS, iOS und macOS; die README-Beispiele werden sowohl von der App als auch von den Tests kompiliert
Schnellstart
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]Screenshots






Zeitleiste
Repository eröffnet; der Großteil des ersten Monats ging in Dokumentationsseiten und Workflows
v1.0.0 getaggt; das Manifest deklarierte .visionOS(.v1_0), eine Plattformversion, die nicht existiert, sodass der Swift Package Manager das Paket nicht auflösen konnte
Die Komponenten wurden entfernt, und das Package wurde auf Platzhaltercode reduziert
v2.0.0: Platzhalter entfernt und das Package von Grund auf als VisionUI neu geschrieben, mit fünf räumlichen Layouts, einem Immersive-Space-Coordinator, begrenzter Manipulation, 97 Tests, DocC und einer Beispiel-App für drei Plattformen