Sobes.tech
Intern

Utilisez-vous UIKit ou SwiftUI dans votre travail?

sobes.tech IA

Réponse de l'IA

Oui, j’utilise les deux frameworks en fonction des exigences du projet.

UIKit est un framework mature adapté aux projets avec une longue histoire, une personnalisation complexe des éléments d’interface, une intégration avec des composants de bas niveau d’iOS et dans les cas où une compatibilité maximale avec les versions précédentes est nécessaire.

SwiftUI est une approche déclarative qui simplifie le développement d’interfaces, notamment pour les nouveaux projets, les applications multiplateformes (iOS, macOS, watchOS, tvOS) et le prototypage. Elle permet d’écrire un code plus concis et compréhensible.

Souvent, les projets utilisent une combinaison de ces frameworks, par exemple en utilisant UIHostingController pour intégrer des vues SwiftUI dans UIKit et vice versa.

Lors du choix d’un framework, je prends en compte les facteurs suivants :

  • Exigences de support pour les anciennes versions du système d’exploitation : UIKit est préférable pour les anciennes versions d’iOS.
  • Complexité de l’UI/Animations : SwiftUI simplifie souvent la création d’animations et de transitions complexes.
  • Taille et expérience de l’équipe : La connaissance de UIKit est plus répandue sur le marché.
  • Avenir du projet : SwiftUI est en développement actif et constitue la technologie native future d’Apple.
// Exemple d’utilisation de UIHostingController pour une vue SwiftUI dans UIKit
import UIKit
import SwiftUI

class MyUIKitViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        // Ajout de la vue SwiftUI dans la hiérarchie UIViewController
        addChild(hostingController)
        view.addSubview(hostingController.view)

        // Configuration des 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)
    }
}

Les deux frameworks ont leurs forces, et le choix dépend de la tâche spécifique et du contexte du projet.