Sobes.tech
Intern

Používáte ve své práci UIKit nebo SwiftUI?

sobes.tech AI

Odpověď od AI

Ano, používám oba frameworky v závislosti na požadavcích projektu.

UIKit je zralý framework vhodný pro projekty s dlouhou historií, složitou přizpůsobitelností prvků rozhraní, integrací s nízkoúrovňovými komponentami iOS a v případech, kdy je požadována maximální zpětná kompatibilita.

SwiftUI je deklarativní přístup, který zjednodušuje vývoj rozhraní, zejména pro nové projekty, multiplatformní aplikace (iOS, macOS, watchOS, tvOS) a prototypování. Umožňuje psát stručnější a srozumitelnější kód.

Projekty často používají kombinaci těchto frameworků, například pomocí UIHostingController pro začlenění SwiftUI pohledů do UIKit a naopak.

Při výběru frameworku zohledňuji následující faktory:

  • Požadavky na podporu starších verzí OS: UIKit je vhodnější pro starší verze iOS.
  • Složitost UI/animací: SwiftUI často zjednodušuje tvorbu složitých animací a přechodů.
  • Velikost týmu a jeho zkušenosti: Znalost UIKit je na trhu běžnější.
  • Budoucnost projektu: SwiftUI je aktivně vyvíjen a je budoucí nativní technologií Apple.
// Příklad použití UIHostingController pro SwiftUI View v UIKit
import UIKit
import SwiftUI

class MyUIKitViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        // Přidání SwiftUI pohledu do hierarchie UIViewController
        addChild(hostingController)
        view.addSubview(hostingController.view)

        // Nastavení Constraints
        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)
    }
}

Oba framework mají své silné stránky a výběr závisí na konkrétním úkolu a kontextu projektu.