Sobes.tech
Junior

Projelerinde UIKit veya SwiftUI kullanıyor musun?

sobes.tech yapay zeka

AI'dan gelen yanıt

Hem UIKit hem de SwiftUI kullanıyorum. Seçim, projenin gereksinimlerine bağlıdır:

  • UIKit'i, eski iOS sürümleriyle uyumluluk konusunda katı gereksinimleri olan, karmaşık özelleştirmeler, eski kod entegrasyonu veya SwiftUI'nin henüz tam olarak desteklemediği belirli navigasyon desenleri olan projeler için tercih ederim. Ayrıca, UIKit, standart dışı davranışlara sahip özel kontroller oluşturmak veya Core Animation ile derin entegrasyon sağlamak için genellikle daha uygundur.

  • SwiftUI'yi, hızlı geliştirme, arayüz oluşturmak için deklaratif yaklaşım, durumla çalışma kolaylığı ve gerçek zamanlı önizleme gerektiren yeni projelerde kullanıyorum. Apple ekosisteminde (iOS, macOS, watchOS, tvOS) çapraz platform geliştirme için idealdir. Karmaşık animasyonlar ve geçişler oluşturmak için minimal kod kullanımıyla çok uygundur. @State, @Binding, @ObservedObject, @EnvironmentObject ve @FetchRequest aracılığıyla veri yönetimi, görünüm mantığını büyük ölçüde basitleştirir.

Genellikle her iki framework'ü (birlikte çalışabilirlik) kullanıyorum, SwiftUI görünümlerini UIKit'e gömmek için UIHostingController veya UIKit bileşenlerini SwiftUI'de kullanmak için UIViewRepresentable/UIViewControllerRepresentable kullanıyorum.

Bir SwiftUI görünümünü UIKit ViewController'a gömme örneği:

import SwiftUI
import UIKit

class MyUIKitViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let swiftUIView = MySwiftUIView() // SwiftUI görünümünüz
        let hostingController = UIHostingController(rootView: swiftUIView)

        addChild(hostingController)
        view.addSubview(hostingController.view)
        hostingController.didMove(toParent: self)

        hostingController.view.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            hostingController.view.topAnchor.constraint(equalTo: view.topAnchor),
            hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
            hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor)
        ])
    }
}

struct MySwiftUIView: View {
    var body: some View {
        Text("Hello from SwiftUI!")
            .padding()
            .background(Color.blue)
            .foregroundColor(.white)
            .cornerRadius(10)
    }
}