0Pricing
Swift Academy · Ders

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 overhead

Canvas'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

  1. Örtük ve Açık Animasyonlar
  2. Kahraman Geçişleri için matchedGeometryEffect
  3. Özel AnimatableModifier ve Animatable
  4. Yüksek Başarımlı Çizim için TimelineView ve Canvas
← Swift Academy Sayfasına Dön