Tüm açık kaynak paketler
PlatformSwift

iOS-Widget-Development-Kit

WidgetKit widget'ları, grafikler, timeline'lar, App Intents ve Live Activity'ler için SwiftUI view'ları ve yardımcılar

27YıldızSon Sürüm: v2.0.0Güncellendi: 15 Ekim 2026
Platformlar:iOS 17macOS 14

Lisans: MIT

WidgetDevelopmentKit, iOS uygulamalarına widget ekleyen geliştiriciler için bir Swift paketi. Home Screen, Lock Screen ve StandBy widget'ları için hazır SwiftUI view'ları, widget boyutuna göre ayarlanmış grafik view'ları, timeline'lar ve uygulamanın widget'la paylaştığı veri için yardımcılar, widget butonları için App Intents ve Live Activity'ler için ActivityKit attribute'ları ve view'ları içeriyor. Widget extension'ı yine siz yazıyorsunuz; paket, her widget'ın ihtiyaç duyduğu view'ları ve tarih, depolama ve retry mantığını hazır veriyor. Third-party bağımlılığı yok.

Özellikler

  • Hava durumu, istatistik, finans, takvim, geri sayım, saat, fitness halkaları, alışkanlık takibi, yapılacaklar ve su gibi Home Screen şablonları; ayrıca widget boyutuna göre ayarlanmış 9 Swift Charts view'ı
  • 15 Lock Screen accessory view'ı (circular, rectangular, inline) ve 7 StandBy view'ı
  • Timeline yardımcıları: entry tarihleri, takvim aritmetiği kullanan reload politikaları ve App Group üzerinden paylaşılan veri için süreli bir snapshot store
  • Interactive widget'lar: 5 App Intent ve bunları çalıştıran butonlu 8 view
  • Live Activity'ler: Lock Screen ve compact Dynamic Island view'larıyla 10 ActivityAttributes tipi ve sırasız güncellemeleri reddeden bir state machine
  • Yalnız geçici hatalarda (408, 5xx, timeout, offline) yeniden deneyen ve widget extension içinde hızlı fail eden bir data loader
  • Tarih, sayı ve retry mantığı NaN, sıfır hedef ve yaz saati günleri dahil Swift Testing testleriyle kapsanıyor; bir test README'deki kod bloklarını derlenen kodla senkron tutuyor

Hızlı Başlangıç

swift
1struct LaunchEntry: TimelineEntry {
2 let date: Date
3}
4 
5struct LaunchProvider: TimelineProvider {
6 func placeholder(in context: Context) -> LaunchEntry {
7 LaunchEntry(date: .now)
8 }
9 
10 func getSnapshot(in context: Context, completion: @escaping (LaunchEntry) -> Void) {
11 completion(LaunchEntry(date: .now))
12 }
13 
14 func getTimeline(in context: Context, completion: @escaping (Timeline<LaunchEntry>) -> Void) {
15 // One entry per hour for the next six hours, then WidgetKit asks again.
16 let entries = TimelineSchedule.dates(from: .now, every: 60 * 60, count: 6).map(LaunchEntry.init)
17 completion(Timeline(entries: entries, policy: .atEnd))
18 }
19}
20 
21struct LaunchCountdownWidget: Widget {
22 let launchDay = DateComponents(calendar: .current, year: 2027, month: 1, day: 1).date ?? .now
23 
24 var body: some WidgetConfiguration {
25 StaticConfiguration(kind: "launch", provider: LaunchProvider()) { entry in
26 CountdownWidget(title: "Launch", targetDate: launchDay, referenceDate: entry.date)
27 }
28 .configurationDisplayName("Countdown")
29 .supportedFamilies([.systemSmall])
30 }
31}

Kurulum

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/iOS-Widget-Development-Kit.git

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/iOS-Widget-Development-Kit.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "WidgetDevelopmentKit", package: "iOS-Widget-Development-Kit")
7 ])
8]

Ekran Görüntüleri

Paketten render edilen hava durumu, su, fitness, geri sayım, alıntı ve alışkanlık widget'ları
Aynı Home Screen widget'ları koyu modda
İstatistik sparkline'ı, ilerleme halkası, çizgi grafik ve çubuk grafik view'ları
Aynı grafik view'ları koyu modda
Lock Screen pil, aktivite halkaları, geri sayım, hava durumu ve istatistik widget'ları
Aynı Lock Screen widget'ları koyu modda

Zaman Çizelgesi

  1. Repo açıldı

  2. v1.0.0 etiketlendi; bu etiketteki manifest yüklenmediği için sürüm derlenemiyor

  3. Yaklaşık 240 satırlık tek bir library target'ına sadeleştirildi; test target'ı hâlâ derlenmiyordu

  4. Yeniden kurulup 2.0.0 olarak yayımlandı (PR #28): view'lar geçmişten geri alınıp düzeltildi, Swift 6 manifest'i, Swift Testing testleri, DocC, örnek uygulama ve CI eklendi

Bağlantılar

İlgili Yazı

Yazıyı Oku