Tüm açık kaynak paketler
PlatformSwift

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.

3YıldızSon Sürüm: v2.0.0 · Güncellendi: 15 Ekim 2026
Platformlar:visionOS 2iOS 18macOS 15

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ıç

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}

Kurulum

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]

Ekran Görüntüleri

Apple Vision Pro simülatöründe örnek uygulama: izleyiciye doğru kıvrılan bir yay üzerinde gezegen adlı beş cam kart; dıştaki kartlar daha yakın ve ortaya dönük
Carousel sayfası: önde Mountains kartı, yanlarda dönük duran Arctic ve City kartları, altta Showing Mountains yazısı
Bileşenler sayfası: iki cam kart, daha geniş dokunma alanlı küçük bir yıldız ve pencerenin altına iliştirilmiş geri, oynat ve ileri düğmeli bir toolbar
Immersive space: odaya farklı yüksekliklerde dağılmış mavi ve turkuaz küreler; galeri penceresinde Hide Orbit düğmesi
Arc, ring, grid, sphere ve helix layout'larının üstten ve önden diyagramları; noktalar öğeleri, oklar her öğenin baktığı yönü gösteriyor
Aynı layout diyagramları koyu zemin üzerinde

Zaman Çizelgesi

  1. Repo açıldı; ilk ayın büyük kısmı doküman sayfalarına ve workflow'lara gitti

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

  3. Bileşenler silindi; paket yer tutucu koda indirildi

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

Bağlantılar

İlgili Yazı

Yazıyı Oku