Alle Open-Source-Pakete
PlattformSwift

VisionOS-UI-Framework

Räumliche Layouts, ein Carousel, Immersive-Space-Handling und begrenzte Manipulation für visionOS – mit SwiftUI und RealityKit.

3SterneNeueste Version: v2.0.0 · Aktualisiert: 15. Oktober 2026
Plattformen:visionOS 2iOS 18macOS 15

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

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]

Screenshots

Die Beispiel-App auf dem Apple-Vision-Pro-Simulator: fünf nach Planeten benannte Glaskarten auf einem Arc, der sich dem Betrachter zuwendet; die äußeren Karten sind näher und zur Mitte gedreht
Die Carousel-Seite: die Karte Mountains vorne, die Karten Arctic und City seitlich abgewendet, darunter der Text Showing Mountains
Die Komponenten-Seite: zwei Glaskarten, ein kleiner Stern mit größerer Tap-Fläche und eine Toolbar mit Zurück-, Play- und Vorwärts-Buttons, die unterhalb des Fensters angebracht ist
Der Immersive Space: blaue und türkisfarbene Kugeln im Raum verteilt auf unterschiedlichen Höhen, das Galerie-Fenster zeigt einen Hide-Orbit-Button
Diagramme der Layouts arc, ring, grid, sphere und helix von oben und von vorne, mit Punkten für die Elemente und Pfeilen für die Blickrichtung jedes Elements
Dieselben Layout-Diagramme auf dunklem Hintergrund

Zeitleiste

  1. Repository eröffnet; der Großteil des ersten Monats ging in Dokumentationsseiten und Workflows

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

  3. Die Komponenten wurden entfernt, und das Package wurde auf Platzhaltercode reduziert

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

Links

Verwandter Artikel

Artikel lesen (English)