Sobes.tech
Intern

Használja a UIKit vagy a SwiftUI-t a munkájában?

sobes.tech MI

Válasz az MI-től

Igen, mindkét keretrendszert a projekt követelményei szerint használom.

A UIKit egy érett keretrendszer, amely alkalmas hosszú múltra visszatekintő projektekhez, összetett felhasználói felület testreszabáshoz, alacsony szintű iOS komponensekkel való integrációhoz és olyan esetekben, amikor maximális visszamenőleges kompatibilitás szükséges.

A SwiftUI deklaratív megközelítés, amely egyszerűsíti a felhasználói felületek fejlesztését, különösen új projektek, többplatformos alkalmazások (iOS, macOS, watchOS, tvOS) és prototípusok esetén. Lehetővé teszi rövidebb és érthetőbb kód írását.

Gyakran ezeknek a keretrendszereknek a kombinációját használják, például a UIHostingController segítségével SwiftUI nézeteket integrálva UIKit-be és fordítva.

A keretrendszer kiválasztásakor figyelembe veszem a következő tényezőket:

  • Régi OS-verziók támogatási követelmények: A UIKit jobb régebbi iOS-verziókhoz.
  • UI/Animációk összetettsége: A SwiftUI gyakran egyszerűsíti összetett animációk és átmenetek létrehozását.
  • Csapat mérete és tapasztalata: A UIKit ismerete széles körben elterjedt a piacon.
  • A projekt jövője: A SwiftUI aktívan fejlődik, és az Apple jövőbeli natív technológiája.
// Példa a SwiftUI nézetek használatára UIHostingController segítségével UIKit-ben
import UIKit
import SwiftUI

class MyUIKitViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let mySwiftUIView = MyCustomSwiftUIView()
        let hostingController = UIHostingController(rootView: mySwiftUIView)

        // SwiftUI nézet hozzáadása a UIViewController hierarchiához
        addChild(hostingController)
        view.addSubview(hostingController.view)

        // Constraints beállítása
        hostingController.view.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            hostingController.view.topAnchor.constraint(equalTo: view.topAnchor),
            hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])

        hostingController.didMove(toParent: self)
    }
}

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

Mindkét keretrendszernek megvannak a maga erősségei, és a választás a konkrét feladattól és a projekt kontextusától függ.