VisionOS-UI-Framework
visionOS için SwiftUI ve RealityKit ile uzamsal layout'lar, carousel, immersive space yönetimi ve sınırlar içinde manipulation.
Lisans: MIT
visionOS 2, iOS 18 ve macOS 15 için bağımlılıksız bir Swift paketi (modül adı VisionUI). Beş layout, SwiftUI view'larını ve RealityKit entity'lerini aynı veriden 3D'de yerleştirir; bir coordinator immersive space'leri her seferinde tek istekle açıp kapatır; bir değer tipi de sürüklenen, sıkıştırılan ve döndürülen nesneleri belirlediğiniz sınırlar içinde tutar. iOS ve macOS'ta layout'lar önden görünüşle çizilir, böylece aynı kod orada da çalışır.
Özellikler
- Her öğe için metre cinsinden konum ve yön döndüren beş layout (arc, ring, grid, sphere, helix); SwiftUI view'ları için SpatialLayoutView, RealityKit entity'leri için arrangeChildren(using:)
- SpatialCarousel: sürüklemeyle dönen ve en yakın view'a oturan bir view halkası; selection binding'i, VoiceOver ayarlanabilir eylemi ve Reduce Motion desteğiyle
- ImmersiveSpaceCoordinator geçiş sırasında gelen ikinci isteği reddeder, başka bir space açmadan önce açık olanı kapatır, yerine yenisi gelen isteklerin geç cevaplarını yok sayar ve space Digital Crown ile kapatıldığında sistemi izler
- ManipulationState nesneyi bir kutu ve ölçek aralığı içinde tutar; serbest, dik ya da kilitli dönüş, yaw snapping ve her gesture için ayrı başlangıç değeri sunar
- SpatialCard, visionOS'ta ornament'a dönüşen bir toolbar ve Apple'ın yönergelerine göre boyutlanan dokunma alanları (visionOS'ta 60 pt, iOS'ta 44, macOS'ta 28)
- Her public API'de girdi kontrolü: öğe sayısı en fazla 4096, uzunluklar en fazla 10 km; NaN ya da sonsuz argümanlar belgelenmiş varsayılanlara döner
- macOS'ta ve iPhone simülatöründe koşan 97 Swift Testing testi; piksel testleri dışındaki 87'si visionOS simülatöründe de koşar
- Dört makaleli DocC kataloğu ve visionOS, iOS ve macOS için SpatialGallery örnek uygulaması; README örneklerini hem uygulama hem testler derler
Hızlı Başlangıç
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}Kurulum
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]Ekran Görüntüleri






Zaman Çizelgesi
Repo açıldı; ilk ayın büyük kısmı doküman sayfalarına ve workflow'lara gitti
v1.0.0 etiketlendi; manifest'i var olmayan bir platform sürümü (.visionOS(.v1_0)) bildirdiği için Swift Package Manager paketi çözemiyordu
Bileşenler silindi; paket yer tutucu koda indirildi
v2.0.0: yer tutucular silindi ve paket VisionUI adıyla sıfırdan yazıldı; beş uzamsal layout, immersive space coordinator, sınırlı manipulation, 97 test, DocC ve üç platformlu örnek uygulama