Agora que instalamos Xcode e sabemos os conceptos básicos da linguaxe de programación Swift, é hora de empezar a introducir SwiftUl.
Anunciado por primeira vez na Conferencia Mundial de Desarrolladores de Apple en 2019, SwiftUl é un enfoque completamente novo para o desenvolvemento de aplicacións para todas as plataformas de sistemas operativos de Apple. Os obxectivos básicos de SwiftUl son facer que o desenvolvemento de aplicacións sexa:
- Máis fácil, máis
- Rápido
- Menos propenso a erros.
Antes de comezar, debes de saber que podes consultar toda a librería SwiftUI e o seu funcionamento técnico na páxina: https://developer.apple.com/documentation/swiftui/
Que é SwiftUI? #
Que é un Framework? #
En programación, un framework (marco de traballo ou estrutura) é un conxunto predefinido de ferramentas, bibliotecas, regras e convencións que proporcionan unha base estrutural para o desenvolvemento de software.
O seu obxectivo principal é facilitar e acelerar o proceso de desenvolvemento ao proporcionar unha estrutura sólida e reutilizable para construír aplicacións.
Os frameworks aportan:
- Abstracción de tarefas comúns: Inclúen compoñentes e funcións que abstraen tarefas comúns e repetitivas, como a xestión de bases de datos, o enrutamento de URL, a creación de interfaces de usuario e a xestión de conexións de rede. Isto permite aos desenvolvedores centrarse na lóxica específica da súa aplicación en lugar de preocuparse polos detalles de implementación de baixo nivel.
- Reutilización de código: Os frameworks adoitan estar deseñados para ser reutilizables en diferentes proxectos. Isto significa que os desenvolvedores poden aproveitar o mesmo framework en múltiples aplicacións, o que aforra tempo e esforzo.
- Consistencia: Os frameworks imponen un conxunto de convencións e mellores prácticas, o que garante que o código desenvolvido co framework siga un estilo coherente. Isto facilita a colaboración entre desenvolvedores e mantén o código máis lexible e mantible.
- Seguridade: Algúns frameworks inclúen características de seguridade incorporadas que axudan a protexer as aplicacións contra ameazas comúns, como a inxección de SQL ou ataques de seguridade web.
- Mellora da produtividade: Os frameworks poden acelerar o proceso de desenvolvemento ao proporcionar funcionalidades listas para usar. Isto reduce a necesidade de escribir código desde cero e permite que os desenvolvedores se centren en resolver problemas específicos da súa aplicación.
- Documentación e soporte: Os frameworks adoitan ir acompañados dunha documentación sólida e dunha comunidade de desenvolvemento activa. Isto facilita a resolución de problemas e a obtención de axuda en caso de que surxan problemas durante o desenvolvemento.
Exemplos de frameworks comúns inclúen:
- SwifUI: Un. framework de desenvolvemento de interfaces de usuario para aplicacións iOS.
- Bootstrap: Bootstrap é un dos frameworks web mais populares e usados e que empregamos comigo na módulo de Aweb en 2º SMR. Foi creado inicialmente polo equipo de Twitter e posteriormente foi posto a disposición dos programadores como un proxecto de código aberto. Bootstrap é unha ferramenta que facilita o desenvolvemento web, ofrecendo un conxunto de recursos e estilos predefinidos que poden ser usados para crear interfaces de usuario adaptables (responsive design).
- Django: Un framework de desenvolvemento web para Python.
- Ruby on Rails: Un framework de desenvolvemento web para Ruby.
- Angular: Un framework de desenvolvemento web para JavaScript.
- Spring: Un framework de desenvolvemento de aplicacións empresariais para Java.
- React: Unha biblioteca de JavaScript utilizada comúnmente en combinación con outros frameworks ou bibliotecas para desenvolver interfaces de usuario.
En resumo, un framework na programación é unha ferramenta esencial que proporciona unha base sólida e eficiente para o desenvolvemento de aplicacións ao abstraer tarefas comúns e promover a reutilización de código, a consistencia e a produtividade.
SwifUI #
SwiftUI é un framework creado por Apple na linguaxe Swift para o desenvolvemento de interfaces de usuario (UI) para aplicacións iOS, macOS, watchOS e tvOS.
Foi introducido na WWDC (Worldwide Developers Conference) de 2019 como unha alternativa moderna ao UIKit, o framework de UI máis antigo utilizado no desenvolvemento de aplicacións iOS.
As vantaxes de SwiftUI:
- Declarativo e Orientado a Obxectos: SwiftUI permite construír a interface de usuario de forma declarativa, o que significa que describir como a interface debe parecer e comportarse, e o framework encárgase de actualizala automaticamente conforme sexa necesario. Isto contrasta co UIKit, que era máis imperativo.
- Multiplataforma: Podes usar SwiftUI para crear interfaces de usuario para aplicacións que funcionan en diferentes plataformas de Apple, incluíndo iOS, macOS, watchOS e tvOS. Isto significa que podes compartir máis código e deseño de interface entre diferentes plataformas.
- Sintaxe Swift: SwiftUI está totalmente integrado coa linguaxe de programación Swift, o que fai que a codificación da interface de usuario sexa máis cohesionada e amigable para os desenvolvedores que xa están familiarizados con Swift.
- Vista Previa (Preview): Unha das características máis útiles de SwiftUI é a capacidade de previsualizar o deseño da interface de usuario directamente no entorno de desenvolvemento, o que axiliza o proceso de deseño e depuración.
- Componentes Reutilizables: O framework inclúe un conxunto de compoñentes de interface de usuario moi personalizables e reutilizables, como botóns, caixas de texto, listas, etc.
- Soporte para Xestos e Animacións: SwiftUI fai máis fácil engadir xestos e animacións á interface de usuario, permitindo crear experiencias interactivas e envolventes.
- Integración con Combine: Combine é un marco introducido por Apple para manexar programación reactiva. SwiftUI integrase perfectamente con Combine, o que permite manexar fluxos de datos de forma eficiente na interface de usuario.
- Aprendizaxe Curta: SwiftUI simplifica moitos aspectos do desenvolvemento de UI, o que o fai máis accesible para principiantes e desenvolvedores que están a migrar doutros plataformas.
En resumo, SwiftUI é un framework poderoso e moderno para o desenvolvemento de interfaces de usuario en aplicacións de Apple, deseñado para mellorar a produtividade dos desenvolvedores e crear interfaces atraentes e consistentes en varias plataformas.
UIKit e Interface Builder #
Ata a introdución de SwiftUI, as aplicacións de iOS construíronse utilizando UIKit xunto cunha colección de fremeworks asociados que compoñen o Kit de Desenvolvemento de Software (SDK) de iOS.
Para axudar no deseño dos deseños da interface de usuario que compoñen as pantallas dunha aplicación, Xcode inclúe unha ferramenta chamada Interface Builder.
Interface Builder é unha ferramenta que permite crear storyboards que conteñen as escenas individuais que compoñen unha aplicación (cunha escena que normalmente representa unha soa pantalla da aplicación):
- O deseño da interface de usuario dunha escena deséñase dentro de Interface Builder arrastrando compoñentes (como botóns, etiquetas, campos de texto e controis deslizantes) desde un panel de biblioteca ata a localización desexada no lenzo da escena.
- A selección dun compoñente nunha escena proporciona acceso a unha serie de paneis de inspectores onde se poden cambiar os atributos dos compoñentes.
- O comportamento de deseño da escena (noutras palabras, como reacciona aos diferentes tamaños de pantalla do dispositivo e os cambios na orientación do dispositivo entre vertical e horizontal) defínese configurando un rango de restricións que ditan como se posiciona e dimensiona cada compoñente en relación tanto coa xanela que contén como cos outros compoñentes do deseño.
- Finalmente, calquera compoñente que necesite responder os eventos do usuario (como un toque do botón ou un movemento do control deslizante) está conectado aos métodos no código fonte da aplicación onde se manexa o evento.
En varios puntos durante este proceso de desenvolvemento, é necesario compilar e executar a aplicación nun simulador ou dispositivo para probar que todo funciona como se espera.
SwiftUI: Sintaxis declarativa #
SwiftUl introduce unha sintaxe declarativa que proporciona unha forma completamente diferente de implementar os deseños e o comportamento da interface de usuario desde o enfoque de UIKit e Interface Builder.
En lugar de deseñar manualmente os complicados detalles do deseño e a aparencia dos compoñentes que compoñen unha escena, SwiftUI permite que as escenas se describan utilizando unha sintaxe simple e intuitiva.
Noutras palabras, SwiftUl permite crear deseños declarando como debería aparecer a interface de usuario sen ter que preocuparse pola complexidade de como se constrúe realmente o deseño.
Isto implica declarar os compoñentes que se incluirán no deseño, indicando o tipo de administrador de deseño no que se van a conter (pila vertical, pila horizontal, formulario, lista, etc.) e o uso de modificadores para establecer atributos como o texto nun botón, a cor de primeiro plano dunha etiqueta ou o método para chamar en caso dun xesto de toque. Despois de facer estas declaracións, todos os detalles complicados de como posicionar, restrinxir e renderizar o deseño son manexados automaticamente por SwiftUI.
Mentres se declara e proba o deseño:
- Xcode proporciona un lenzo de vista previa que cambia en tempo real para reflectir a aparencia do deseño.
- Xcode tamén inclúe un modo de vista previa en vivo que permite que a aplicación se inicie dentro do lenzo de vista previa e se probe completamente sen necesidade de construír e executarse nun simulador ou dispositivo.
SwiftUI: Modelo de datos #
SwiftUl proporciona varias formas de vincular o modelo de datos dunha aplicación aos compoñentes da interface de usuario e a lóxica da aplicación.
Cando se implementa, o modelo de datos publica variables de datos ás que outras partes da aplicación poden subscribirse.
- Os cambios nos datos se pasan automaticamente a todos os subscritores.
- Se a ligazón realízase a partir dun compoñente da interface de usuario, calquera cambio de datos reflectirase automaticamente dentro da interface de usuario por SwiftUI sen necesidade de escribir ningún código adicional.
SwiftUI vs UIKit #
Agora, e podendo usar UIKit e SwiftUl, xorde a pregunta de cal é a mellor opción. É importante entender que SwiftUl e UIKit non se exclúen mutuamente. De feito, hai varias solucións de integración dispoñibles
- Se o soporte de dispositivos que executan versións anteriores de iOS non é motivo de preocupación e está a comezar un novo proxecto, ten sentido usar SwiftUI sempre que sexa posible.
- SwiftUl non só proporciona unha contorna de desenvolvemento de aplicacións máis rápido e eficiente, senón que tamén fai que sexa máis fácil facer que a mesma aplicación estea dispoñible en múltiples plataformas de Apple (iOS, iPadOS, macOS, watchOS e tvOS) sen facer cambios significativos no código.
- Se tes unha aplicación existente desenvolvida usando UIKit, non hai un xeito simple de migración dese código a SwiftUl, polo que ten sentido seguir usando UIKit para esa parte do proxecto.
Aínda que empreguemos SwiftUl para novos proxectos, probablemente non será posible evitar usar UIKit por completo, xa que seguirá sendo necesario usar UIKit para certas funcións que aínda non están dispoñibles en SwiftUI.
Ademais, para deseños de deseño de interface de usuario extremadamente complexos, tamén pode ser necesario usar Interface Builder en situacións nas que as necesidades de deseño non se poden satisfacer utilizando as vistas do contedor de deseño SwiftUl.
Xerarquía dunha aplicación en SwiftUI #
Unha aplicación SwiftUl completa constrúese a partir de múltiples compoñentes que se ensamblan de maneira xerárquica.
Antes de continuar, é importante distinguir a diferenza entre o termo «app» e o elemento «App» descrito na figura anterior:
- Usamos o termo «app» para referirnos á aplicación completada, instalada e en execución
- Nos referimos ao elemento da figura superior como «App».
En iOS ou watchOS, unha aplicación normalmente conterá unha soa escena que toma a forma dunha xanela que ocupa toda a pantalla. Con todo, nun sistema macOS ou iPadOS, unha aplicación pode incluír múltiples instancias de escena, a miúdo representadas por xanelas separadas que se poden mostrar simultaneamente ou agrupar nunha interface con pestanas.
As aplicacións SwiftUl constrúense xerárquicamente. Na parte superior da xerarquía atópase a instancia App que é responsable do lanzamento e do ciclo de vida da aplicación. Unha ou máis instancias de Scene secundarias conteñen xerarquías das instancias de View que compoñen a interface de usuario da aplicación.
App #
O obxecto App é o elemento de nivel superior dentro da estrutura dunha aplicación SwiftUl:
- É responsable de manexar o lanzamento e o ciclo de vida de cada instancia en execución da aplicación.
- É responsable de xestionar as diversas escenas que compoñen a interface de usuario da aplicación.
- Unha aplicación só incluirá unha instancia do obxecto App.
Scene – Escenas #
Cada aplicación SwiftUI conterá unha ou máis escenas.
Unha escena representa unha sección ou rexión da interface de usuario da aplicación.
- En iOS e watchOS, unha escena adoita adoptar a forma dunha xanela que ocupa toda a pantalla do dispositivo.
- As aplicacións SwiftUl que se executan en macOS e iPadOS, doutra banda, probablemente estarán compostas por múltiples escenas.
View – Vistas #
As vistas son os bloques de construción básicos que compoñen os elementos visuais da interface de usuario, como botóns, etiquetas e campos de texto.
Cada escena conterá unha xerarquía das vistas que compoñen unha sección da interface de usuario da aplicación.
- As vistas poden ser elementos visuais individuais, como vistas de texto ou botóns, ou tomar a forma de contedores que xestionan outras vistas.
- A vista Vertical Stack, por exemplo, está deseñada para mostrar vistas secundarias nun deseño vertical.
A figura inferior, por exemplo, ilustra unha escena que contén unha xerarquía de vista simple que consiste nunha pila vertical que contén unha combinación de botón e vista de texto: