WidgetKit Widget'ı Oluşturma
Zaman çizelgesine sahip bir ana ekran widget'ı oluşturun.
WidgetKit Widget'ı Oluşturma, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Araç Takımı Nedir
Araç takımı, Ana Ekran'da, Kilit Ekranı'nda veya StandBy'da bulunan, bir bakışta görülebilen küçük bir görünümdür. Mini uygulama değildir; kaydırma yapamaz veya rastgele kod çalıştıramaz. Sağladığınız zamanlamaya göre sistemin WidgetKit aracılığıyla yenilediği bir veri anlık görüntüsünü gösterir.
import WidgetKit
import SwiftUI
// A widget = configuration + timeline of entries
// + a SwiftUI view that renders one entryWidget Uzantısı Hedefi
Araç takımları ana uygulamada değil, ayrı bir Widget Uzantısı hedefinde yayımlanır. Bu uzantının kendi paketi vardır ve kendi sürecinde çalışır. Uzantıyı, yapılandırmayı ve sağlayıcıyı oluşturan Xcode Widget Uzantısı şablonu aracılığıyla eklersiniz.
import WidgetKit
// File > New > Target > Widget Extension
// The extension declares one or more widgets
// in a WidgetBundle if you have several.Araç Takımı Türü
Bir araç takımı Widget protokolüne uyar ve bir yapılandırma döndüren body sunar. Yapılandırma; bir tür tanımlayıcısını, bir timeline sağlayıcısını ve her entry'yi oluşturan görünümü bir araya getirir.
import WidgetKit
import SwiftUI
struct WeatherWidget: Widget {
var body: some WidgetConfiguration {
StaticConfiguration(
kind: "WeatherWidget",
provider: WeatherProvider()) { entry in
WeatherView(entry: entry)
}
.configurationDisplayName("Weather")
.description("Shows the current forecast.")
}
}StaticConfiguration ve AppIntentConfiguration
StaticConfiguration, kullanıcı seçeneği olmayan araç takımları içindir. AppIntentConfiguration, kullanıcıların bir AppIntent aracılığıyla araç takımını özelleştirmesine (bir şehir veya hesap seçmesine) olanak tanır. Sabit içerik için statik yapılandırmayı, yapılandırılabilir araç takımları için niyet tabanlı yapılandırmayı seçin.
import WidgetKit
// StaticConfiguration -> no user choices
// AppIntentConfiguration -> user-editable parameters
let kinds = "static vs configurable"
_ = kindsTimeline Entry
Araç takımının gösterebileceği zaman içindeki her nokta, bir TimelineEntry'dir; bu, bir date ile görünümünüzün ihtiyaç duyduğu diğer verileri içeren bir yapıdır. Sağlayıcı bu entry'lerden oluşan bir dizi sunar.
import WidgetKit
struct WeatherEntry: TimelineEntry {
let date: Date
let temperature: Int
let condition: String
}Araç Takımı Görünümü
Görünüm, sade bir SwiftUI görünümüdür ancak kısıtlamaları vardır: kaydırma yoktur, etkileşim sınırlıdır ve görünümün birkaç sabit boyutta da doğru görünmesi gerekir. Entry verisini okuyup bir bakışta anlaşılabilen, düzenli bir özet yerleştirin.
import SwiftUI
import WidgetKit
struct WeatherView: View {
let entry: WeatherEntry
var body: some View {
VStack {
Text(entry.condition)
Text("\(entry.temperature) degrees")
.font(.title)
}
}
}Desteklenen Boyutlar
Desteklediğiniz boyutları supportedFamilies ile bildirin: .systemSmall, .systemMedium, .systemLarge, Kilit Ekranı için .accessoryRectangular/.accessoryCircular ve diğerleri. Yerleşimi widget family ortamını kullanarak her family için uyarlayın.
import WidgetKit
import SwiftUI
// .configurationDisplayName(...)
// .supportedFamilies([.systemSmall, .systemMedium,
// .accessoryRectangular])
let families = "declare supported sizes"
_ = familiesFamily'ye Uyum Sağlama
Ayrı araç takımları yazmadan yerleşimleri farklılaştırmak (küçük ve kompakt bir araç takımına karşı daha zengin bir orta boy araç takımı oluşturmak) için görünümün içinde @Environment(\.widgetFamily) değerini okuyun.
import SwiftUI
import WidgetKit
struct AdaptiveView: View {
@Environment(\.widgetFamily) var family
let entry: WeatherEntry
var body: some View {
if family == .systemSmall {
Text("\(entry.temperature)")
} else {
Text("\(entry.condition) \(entry.temperature)")
}
}
}Kapsayıcı Arka Planı
Modern araç takımları, StandBy ve Kilit Ekranı gibi bağlamlarda sistemin doğru biçimde işleyebilmesi için arka planlarını containerBackground(for: .widget) ile bildirmelidir. Bu bildirim olmazsa araç takımı reddedilebilir veya yanlış görünebilir.
import SwiftUI
import WidgetKit
struct Bg: View {
var body: some View {
Text("Hi")
.containerBackground(for: .widget) {
Color.blue
}
}
}Uygulamayla Veri Paylaşma
Araç takımı süreci ayrı olduğundan uygulamanın bellek içi durumunu okuyamaz. Her iki hedefin de erişebildiği ortak bir kapsayıcı olan bir Uygulama Grubu üzerinden veri paylaşın; genellikle grubun ortak bir UserDefaults paketi ya da grup kapsayıcısındaki bir dosya kullanılır.
import Foundation
let shared = UserDefaults(
suiteName: "group.com.example.app")
// App writes; widget reads the same suite.
_ = sharedAraç Takımını Yenileme
Uygulamanın verileri değiştiğinde WidgetCenter.shared.reloadTimelines(ofKind:) (veya reloadAllTimelines()) çağrısıyla WidgetKit'e yenileme komutu verin. Böylece sistem, sağlayıcınızdan yeni bir timeline istemeye yönlendirilir.
import WidgetKit
func refreshWidget() {
WidgetCenter.shared.reloadTimelines(
ofKind: "WeatherWidget")
}Hızlı Kontrol
Bir araç takımının verileri ana uygulamasıyla nasıl paylaştığını hatırlayın.
Özet
WidgetKit ile bir araç takımı oluşturdunuz:
- Araç takımları ayrı bir uzantıda bulunur,
Widgetprotokolüne uyar ve birWidgetConfigurationdöndürür. StaticConfigurationveyaAppIntentConfiguration, birTimelineEntryve kısıtlı bir SwiftUI görünümü kullanın.supportedFamiliesdeğerini bildirin,widgetFamilyile uyarlayın ve bircontainerBackgroundekleyin.- Verileri bir Uygulama Grubu üzerinden paylaşın ve
WidgetCenter.reloadTimelinesile yenileyin.
Sıkça Sorulan Sorular
“WidgetKit Widget'ı Oluşturma” dersi ücretsiz mi?
Evet — “WidgetKit Widget'ı Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“WidgetKit Widget'ı Oluşturma” dersinde ne öğreneceğim?
Zaman çizelgesine sahip bir ana ekran widget'ı oluşturun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“WidgetKit Widget'ı Oluşturma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- WidgetKit Widget'ı Oluşturma
- Zaman Çizelgesi Sağlayıcıları ve Anlık Görüntüler
- Uygulama Uzantılarına Genel Bakış
- Uygulama Niyetleri ve Kestirmeler