0Pricing
Swift Academy · Ders

UIViewRepresentable: UIKit Görünümlerini Sarmalama

SwiftUI'da UIKit görünümlerini makeUIView ve updateUIView ile uygulayın ve kaldırın.

UIViewRepresentable: UIKit Görünümlerini Sarmalama, 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.

UIViewRepresentable Neden Kullanılır?

Birçok UIKit görünümünün henüz SwiftUI eşdeğeri yoktur. UIViewRepresentable, UIKit görünümlerini SwiftUI'ye bağlar.

import SwiftUI
import UIKit

struct WebView: UIViewRepresentable {
  let url: URL
  // ...
}

Gerekli Yöntemler

Görünümü oluşturmak için makeUIView yöntemini, SwiftUI durum değişikliklerini eşitlemek için updateUIView yöntemini uygulayın.

func makeUIView(context: Context) -> WKWebView {
  WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
  uiView.load(URLRequest(url: url))
}

Tam WebView Örneği

SwiftUI'de web içeriği görüntülemek için WKWebView saran eksiksiz bir UIViewRepresentable örneği.

struct WebView: UIViewRepresentable {
  let url: URL
  func makeUIView(context: Context) -> WKWebView { WKWebView() }
  func updateUIView(_ uiView: WKWebView, context: Context) {
    uiView.load(URLRequest(url: url))
  }
}

SwiftUI'de Kullanım

Sarmalanmış görünümü diğer SwiftUI görünümleri gibi kullanın ve değiştiricileri normal şekilde uygulayın.

WebView(url: URL(string: "https://apple.com")!)
  .frame(height: 400)
  .cornerRadius(12)

Veri Aktarma

Verileri SwiftUI'den UIKit'e, temsil edicinin updateUIView içinde güncellenen saklanan özellikleri aracılığıyla aktarın.

struct MapView: UIViewRepresentable {
  var region: MKCoordinateRegion
  func makeUIView(context: Context) -> MKMapView { MKMapView() }
  func updateUIView(_ uiView: MKMapView, context: Context) {
    uiView.setRegion(region, animated: true)
  }
}

UIKit Görünümlerini Ayırma

Görünüm kaldırıldığında gözlemciler gibi kaynakları temizlemek için isteğe bağlı dismantleUIView yöntemini uygulayın.

static func dismantleUIView(_ uiView: WKWebView, coordinator: Coordinator) {
  uiView.stopLoading()
}

context Parametresi

context, koordinatöre, ortama ve animasyon işlemine erişim sağlar.

func updateUIView(_ uiView: MKMapView, context: Context) {
  print(context.environment.colorScheme)  // .light or .dark
}

UIViewRepresentable'da Ortam Değerleri

UIKit yapılandırmasını uyarlamak için SwiftUI ortam değerlerini context.environment üzerinden okuyun.

if context.environment.colorScheme == .dark {
  uiView.overrideUserInterfaceStyle = .dark
}

UIKit Görünümlerini Boyutlandırma

UIViewRepresentable, doğal içerik boyutunu veya SwiftUI çerçeve değiştiricilerini kullanır. Özel boyutlandırma için sizeThatFits yöntemini uygulayın.

func sizeThatFits(_ proposal: ProposedViewSize, uiView: WKWebView, context: Context) -> CGSize? {
  CGSize(width: proposal.width ?? 300, height: 400)
}

makeUIView Yan Etkilerinden Kaçınma

makeUIView yöntemini saf tutun — yalnızca oluşturma ve yapılandırma işlemlerini burada yapın. Durum odaklı güncellemeleri updateUIView içine koyun.

// WRONG:
func makeUIView(context: Context) -> MKMapView {
  let v = MKMapView()
  v.setRegion(region, animated: false)  // belongs in updateUIView
  return v
}

Yaygın Olarak Sarmalanan Görünümler

UIViewRepresentable ile sarmalanan tipik UIKit görünümleri: WKWebView, MKMapView, UITextView, UIImagePickerController ve AVPlayerLayer.

// UITextView with custom toolbar
struct RichTextEditor: UIViewRepresentable {
  @Binding var text: String
  // makeUIView, updateUIView, Coordinator...
}

Kısa Kontrol

İlk oluşturma işleminden sonra SwiftUI durumunu UIKit görünümüyle eşitlemek için UIViewRepresentable içindeki hangi yöntem çağrılır?

Ders Özeti

UIViewRepresentable, makeUIView (bir kez oluşturma) ve updateUIView (durum değişikliğinde eşitleme) yöntemlerini gerektirir. Görünümü uyarlamak için context.environment kullanın. Temizleme işlemini dismantleUIView içinde yapın. Boyutlandırmayı denetlemek için SwiftUI çerçeve değiştiricilerini uygulayın.

Sıkça Sorulan Sorular

“UIViewRepresentable: UIKit Görünümlerini Sarmalama” dersi ücretsiz mi?

Evet — “UIViewRepresentable: UIKit Görünümlerini Sarmalama” 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.

“UIViewRepresentable: UIKit Görünümlerini Sarmalama” dersinde ne öğreneceğim?

SwiftUI'da UIKit görünümlerini makeUIView ve updateUIView ile uygulayın ve kaldırın. 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.

“UIViewRepresentable: UIKit Görünümlerini Sarmalama” 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. UIViewRepresentable: UIKit Görünümlerini Sarmalama
  2. Temsilci İletişimi için Coordinator Kalıbı
  3. UIViewControllerRepresentable
  4. UIHostingController: UIKit İçinde SwiftUI
← Swift Academy Sayfasına Dön