Sobes.tech
Intern

Utiliza UIKit ou SwiftUI no seu trabalho?

sobes.tech IA

Resposta da IA

Sim, utilizo ambos os frameworks dependendo dos requisitos do projeto.

UIKit é um framework maduro que é adequado para projetos com uma longa história, personalização complexa de elementos de interface, integração com componentes de baixo nível do iOS e em casos onde é necessária compatibilidade máxima com versões anteriores.

SwiftUI é uma abordagem declarativa que simplifica o desenvolvimento de interfaces, especialmente para novos projetos, aplicações multiplataforma (iOS, macOS, watchOS, tvOS) e prototipagem. Permite escrever código mais conciso e compreensível.

Frequentemente, os projetos usam uma combinação destes frameworks, por exemplo, usando UIHostingController para integrar vistas SwiftUI no UIKit e vice-versa.

Ao escolher um framework, considero os seguintes fatores:

  • Requisitos de suporte para versões antigas do sistema operativo: UIKit é melhor para versões antigas do iOS.
  • Complexidade de UI/Animações: SwiftUI frequentemente simplifica a criação de animações e transições complexas.
  • Tamanho e experiência da equipa: O conhecimento de UIKit é mais comum no mercado.
  • Futuro do projeto: SwiftUI está em desenvolvimento ativo e é a tecnologia nativa futura da Apple.
// Exemplo de uso de UIHostingController para uma vista SwiftUI em UIKit
import UIKit
import SwiftUI

class MyUIKitViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        // Adicionar vista SwiftUI na hierarquia UIViewController
        addChild(hostingController)
        view.addSubview(hostingController.view)

        // Configuração de 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)
    }
}

Ambos frameworks têm os seus pontos fortes, e a sua escolha depende da tarefa específica e do contexto do projeto.