Yüksek Başarımlı Çizim için TimelineView ve Canvas
TimelineView zamanlamaları ve Canvas API ile gerçek zamanlı animasyonlar oluşturun.
Yüksek Başarımlı Çizim için TimelineView ve Canvas, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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.
TimelineView Genel Bakışı
TimelineView, içeriğini belirli bir programa göre yeniden çizer ve zamanlayıcı kullanmadan gerçek zamanlı animasyonlar oluşturmanızı sağlar.
TimelineView(.animation) { timeline in
Text(timeline.date.formatted(date: .omitted, time: .standard))
}TimelineSchedule Türleri
Yerleşik programlar: .animation (her karede), .periodic (sabit aralıklarla), .explicit (belirli tarihlerde).
TimelineView(.periodic(from: .now, by: 1.0)) { context in
ClockFace(date: context.date)
}Canvas Genel Bakışı
Canvas, Core Graphics'e benzer şekilde yüksek performanslı, doğrudan işleme yapılan grafikler için 2B çizim bağlamı sağlar.
Canvas { ctx, size in
ctx.fill(
Path(ellipseIn: CGRect(origin: .zero, size: size)),
with: .color(.blue)
)
}Canvas'ta Şekiller Çizme
Yolları ve görüntüleri oluşturmak için GraphicsContext türünün fill, stroke ve draw gibi yöntemlerini kullanın.
Canvas { ctx, size in
var path = Path()
path.move(to: .zero)
path.addLine(to: CGPoint(x: size.width, y: size.height))
ctx.stroke(path, with: .color(.red), lineWidth: 2)
}TimelineView ve Canvas'ı Birleştirme
SwiftUI durumunu güncellemeden kare kare animasyon oluşturmak için bir Canvas'ı TimelineView içine yerleştirin.
TimelineView(.animation) { timeline in
Canvas { ctx, size in
let t = timeline.date.timeIntervalSinceReferenceDate
let x = size.width * (0.5 + 0.4 * cos(t))
let y = size.height * (0.5 + 0.4 * sin(t))
ctx.fill(Path(ellipseIn: CGRect(x: x-10, y: y-10, width: 20, height: 20)), with: .color(.orange))
}
}Sembolleri Çözümleme
SwiftUI görünümlerini (Image gibi) Canvas'ta çizilebilir sembollere dönüştürmek için ctx.resolve() çağrısını kullanın.
Canvas { ctx, size in
let symbol = ctx.resolveSymbol(id: "star")!
ctx.draw(symbol, at: CGPoint(x: 50, y: 50))
} symbols: {
Image(systemName: "star.fill").tag("star")
}Canvas'ta Metin ve Biçimlendirilmiş Dizeler
Canvas içinde özel etiket oluşturma işlemi için metni ctx.draw(Text(...), at:) kullanarak çizin.
Canvas { ctx, size in
ctx.draw(
Text("Score: 100").font(.title).foregroundStyle(.white),
at: CGPoint(x: size.width/2, y: 30)
)
}Dönüşümler ve Kırpma
Karmaşık efektler için çizim bağlamına afin dönüşümler ve kırpma yolları uygulayın.
Canvas { ctx, size in
ctx.translateBy(x: size.width/2, y: size.height/2)
ctx.rotate(by: .degrees(45))
ctx.fill(Path(CGRect(x: -50, y: -50, width: 100, height: 100)), with: .color(.purple))
}SwiftUI Görünümlerine Kıyasla Performans
Canvas, tüm grafikleri tek bir çizim geçişinde oluşturur — binlerce görünümün çok yavaş kalacağı parçacık sistemleri veya karmaşık grafikler için idealdir.
// Benchmark: 500 moving dots
// Canvas: ~120fps on iPhone
// SwiftUI views: ~30fps due to view tree overheadCanvas'ta Erişilebilirlik
Canvas içeriği VoiceOver tarafından görülemez. accessibilityChildren değiştiricisi aracılığıyla erişilebilirlik etiketleri ekleyin.
Canvas { ctx, size in
// draw chart bars
}
.accessibilityChildren {
ForEach(bars) { Text("\($0.label): \($0.value)") }
}TimelineView Yenileme Sıklığı
Bağlam, sistem yoğun yük altındayken ayrıntı düzeyini azaltabilmeniz için bir cadence ipucu (canlı, saniyelik, dakikalık) sağlar.
TimelineView(.animation) { ctx in
if ctx.cadence == .live {
HighDetailAnimation(date: ctx.date)
} else {
LowDetailAnimation(date: ctx.date)
}
}Kısa Kontrol
TimelineView'ın her animasyon karesinde yeniden çizilmesini hangi TimelineSchedule sağlar?
Ders Özeti
TimelineView, bir programa göre yeniden çizim yapar (.animation ile kare başına). Canvas, doğrudan işleme yapılan bir 2B çizim bağlamı sağlar. Kare başına SwiftUI görünüm farklılaştırmasının ek yükü olmadan yüksek performanslı parçacık efektleri, oyunlar ve canlı grafikler oluşturmak için bu ikisini birleştirin.
Sıkça Sorulan Sorular
“Yüksek Başarımlı Çizim için TimelineView ve Canvas” dersi ücretsiz mi?
Evet — “Yüksek Başarımlı Çizim için TimelineView ve Canvas” 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.
“Yüksek Başarımlı Çizim için TimelineView ve Canvas” dersinde ne öğreneceğim?
TimelineView zamanlamaları ve Canvas API ile gerçek zamanlı animasyonlar 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 4. dersidir.
“Yüksek Başarımlı Çizim için TimelineView ve Canvas” 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
- Örtük ve Açık Animasyonlar
- Kahraman Geçişleri için matchedGeometryEffect
- Özel AnimatableModifier ve Animatable
- Yüksek Başarımlı Çizim için TimelineView ve Canvas