Patrick Gainher • 04 nov 2019 • Apple iOS SWIFT (iPhone, iPad e iPod Touch)
Neste artigo, aprenderemos mais o sobre componentes do Xcode, aqui falando sobre o UIKit.
No artigo passado, comentamos a respeito da Interface Builder. Agora, veremos à respeito do UIKit, com seus atributos: Strings, Functions, Structures, Classes e Inheritance, Collections e Loops.
O UIKit já foi discutido anteriormente em artigos passados, e aqui exploraremos mais à respeito dele em particular. O framework UIKit fornece os objetos principais que um programador irá precisar para construir aplicativos para iOS, iPadOS e também o tvOS. O programador utilizará estes objetos para servir como um display na tela, exibindo o conteúdo na interface. Além disso, o UIKit servirá para interagir com o conteúdo, e gerenciar as interações com o sistema. Aplicativos utilizam o UIKit para seu comportamento básico, e o UIKit fornece várias maneiras para o programador customizar tal comportamento para estar de acordo com suas necessidades. Veja abaixo, um dos exemplos de fornecimento de templates por parte do Xcode.
O Xcode fornece projetos estilo “template” que servem como pontos de início para cada aplicativo criado. Por exemplo, temos a estrutura de um aplicativo criado utilizando o template “Single View App”. O template irá então fornecer uma interface de usuário mínima, assim permitindo a compilação e execução do projeto em imediato para ver os resultados no dispositivo ou simulador.
Figura 1 – Estrutura de dados do Single View App.
O template para uma única view contêm arquivos fonte para um App Delegate e o View Controller, possuindo também o storyboard, o catálogo de recursos (imagens, áudio, etc.) e arquivos Info.plist.
Ao programador construir um aplicativo, o Xcode irá compilar os arquivos fonte e assim criará um “pacote” para o projeto, chamado de App Bundle. Um pacote de aplicativo é um estruturado diretório estruturado que contém códigos e recursos associados ao aplicativo. Os recursos incluem imagens, arquivos storyboard, arquivos string, metadados do aplicativo, e assim por diante. A estrutura do pacote é importante, mas o Xcode saberá onde os recursos são necessários em localização.
Cada aplicativo do tipo UIKit precisa ter os seguintes recursos:
Ícones de aplicativos;
O Storyboard da tela de boas vindas;
O sistema irá transmitir o ícone do aplicativo na tela principal, em configurações, e em todos os outros lugares para diferenciar o aplicativo de outros. Devido ao seu uso em múltiplos lugares (e em múltiplos dispositivos), será necessário um bom número de resoluções distintas para o ícone dentro do banco de imagens do Xcode. O ícone do aplicativo deve ser distintivo em ajudar ao usuário identificar o mesmo de forma rápida na tela inicial.
Figura 2 – Diferentes tamanhos de ícones para um único aplicativo iOS.
Um catálogo de ativos contém muitos variantes de um único ícone. O arquivo LaunchScreen.storyboard contém a interface inicial do aplicativo, e pode ser usado como uma versão simplificada ou como uma tela de abertura. Quando o usuário pressiona no ícone do aplicativo, o sistema irá mostrar a tela de abertura instantaneamente, deixando o mesmo ciente da abertura do aplicativo. Além disso, a tela de abertura fornece uma “cobertura” enquanto o aplicativo é inicializado. Ao estar pronto, o sistema esconde a tela de abertura e revela o conteúdo presente na interface.
O sistema deriva informação sobre a configuração do aplicativo (junto com suas capacidades) à partir do arquivo Info.plist, que é “information property list” dentro do pacote. O Xcode fornece uma versão pré-configurada deste arquivo com cada template, mas será necessário modificá-lo 100% das vezes. Por exemplo, se o aplicativo depende de algum hardware específico, ou utiliza frameworks do sistema específico, será necessário adicionar a informação pertinente às características de tal arquivo.
Uma modificação muito comum que o programador pode fazer ao Info.plist é declarar os requerimentos de hardware e software do aplicativo, para que o mesmo possa ser executado com sucesso. Essa informação serve de comunicação entre o sistema e o aplicativo, facilitando e deixando assim mais rápida a comunicação entre eles. Um exemplo comum, um aplicativo de navegação pode necessitar da presença do hardware GPS para fornecer direções. A App Store previne um aplicativo de ser instalado à um dispositivo que não esteja de acordo com as necessidades, o que é uma outra utilidade presente no arquivo.
Figura 3 – Declarando os requerimentos de hardware e software do aplicativo.
Capacidades de dispositivo incluem informações como se um aplicativo precisa fazer o uso da câmera, localização, ou alguma outra tecnologia particular.
O UIKit fornece muitos dos objetos principais de um aplicativo incluindo aqueles que interagem com o sistema, executam o evento principal de loop de um aplicativo, e mostram o conteúdo na tela do dispositivo. O programador faz uso destes objetos no sentido “como é”, ou com poucas modificações. Saber quais objetos devem ser modificados e quando deverão é crucial para implementar seu aplicativo.
A estrutura dos aplicativos UIKit é baseada no padrão MVC, o qual já analisamos em artigos passados. Mas apenas para lembrar:
Objetos Model gerenciam os dados do aplicativo e sua lógica;
Objetos View fornecem a representação visual dos dados;
Objetos Controller agem como uma conexão entre os objetos do tipo Model e View, assim movendo dados entre os mesmos em períodos apropriados;
A figura abaixo é uma representação estrutural de um aplicativo UIKit, confira:
Figura 4 –Os objetos principais de um aplicativo.
Um aplicativo contém um Main Controller e um ou mais View Controllers. Além disso, inclui objetos Model representando os dados do aplicativo, e contém a janela e objetos View para a interface do aplicativo.
O UIKit e os frameworks Foundation fornecem muitos dos tipos básicos que programadores utilizam em seus apps. O UIKit fornece um objeto chamado UIDocument para organizar as estruturas de dados que pertencem em um arquivo baseado em disco. O framework Foundation em contrapartida define objetos básicos representando strings, números, arrays, e outros tipos de dados. O Swift Standard Library fornece muitos dos mesmos tipos disponíveis no framework Foundation.
O UIKit fornece a maior parte dos objetos dentro da camada do Controller e da View. Em específico, o UIKit define a classe UIView, que é responsável por projetar o conteúdo em tela. O objeto UIApplication executa dentro do evento Main e gerencia o ciclo de vida do aplicativo como um todo.