Como criar cards personalizados usando Table View

Lia Kassardjian
Apple Developer Academy | Mackenzie
5 min readApr 6, 2020

Uma Table View pode ser muito útil no desenvolvimento de um aplicativo, ainda mais personalizando suas células de acordo com o nosso design. Nesse tutorial, veremos como fazer cards a partir das células de uma Table View.

Criando a Table View

Para começar, vamos seguir alguns passos no Storyboard. Como base, inserimos no Storyboard uma Table View Controller, a qual deve pertencer a uma classe que herda de UITableViewController; através dessa classe, podemos controlar a exibição dos dados nas células e as operações sobre a Table View. Sendo assim, começamos com o seguinte esquema:

A Table View Controller inserida no Storyboard pertence à classe CardsTableViewController.

Uma vez que já temos nossa classe instanciada no Storyboard, podemos configurar as células. Para isso, nossas células também deverão pertencer a uma classe personalizada. Através dessa classe, poderemos inserir elementos na célula e configurá-la conforme a necessidade.

As células da Table View pertencem à classe CardTableViewCell.

Construindo cards

Agora podemos começar a construção dos cards em si. Observando a hierarquia da Table View no Storyboard, observamos que existe uma view dentro de cada célula, porém, para fazer os cards, precisaremos inserir dentro da célula uma segunda view, que será o card em si. Para configurá-la, devemos indicar que ela faz parte das células, para isso, vamos criar um outlet dentro da classe que fizemos para a célula. Na imagem a seguir, podemos observar que o tamanho da célula foi aumentado no Storyboard e a cor da view foi alterada.

A "containerView" agora pertence à classe das células.

Agora deixe a criatividade fluir! Insira os elementos desejados para o seu card dentro da view que criamos. Nesse caso, vamos imaginar um aplicativo que controle eventos e apresente, em cada card, a data e o nome de cada um; além disso, vamos inserir sombras e um gradiente no fundo. Inserindo e referenciando os elementos corretamente, observamos o seguinte resultado:

Cada célula possui, agora, uma View e dois Text Fields.

A fim de observar o desenvolvimento dos cards, foi criada uma classe “Event”, que será o modelo de dados dessa aplicação. Alguns eventos foram instanciados e, através dos métodos nativos da Table View Controller, são acessados e exibidos na tela. Ao executar o código, observamos o seguinte:

A "containerView" é a base dos cards.

Vemos que os cards ainda parecem sem forma; vamos, então, acrescentar detalhes para melhorá-los. Vamos começar arredondando as bordas dos cards; para isso, acessamos a propriedade “didSet” da variável "containerView" e trabalhamos com a propriedade “cornerRadius” através do seguinte código:

Bordas da "containerView" foram arredondadas.

Agora os cards estão começando a tomar forma, mas ainda faltam alguns detalhes. Algo interessante de se acrescentar em cards são sombras, então vamos colocá-las. Assim como o arredondamento das bordas, as sombras são inseridas assim que a View é configurada, no “didSet”. Nesse caso, vamos trabalhar com algumas características das sombras:

  • Opacidade: quanto maior esse valor, mais intensa é a cor da sombra;
  • Raio: quanto maior esse valor, maior o alcance da sombra;
  • Cor: por padrão, a sombra é preta, mas esse atributo, do tipo CGColor, pode ser facilmente alterado;
  • Direção, ou “Offset": atributo do tipo CGSize.

No código abaixo, essas propriedades foram tratadas e os resultados podem ser observados na imagem que se segue:

Os cards, agora, possuem também sombras.

Os cards estão quase prontos, mas ainda faltam alguns detalhes. Algo que pode incomodar a vista são as linhas nativas da Table View que aparecem separando as células. Felizmente, remover essas linhas é muito simples e pode ser feito no próprio storyboard: basta configurar o separador de células da Table View para "None".

Configurando o separador para "none".
Não há mais linhas separando os cards.

Agora sim temos cards! Os elementos que fizemos até então podem ser adaptados para construir diferentes tipos de cards, com imagens, botões e labels que se adaptem ao problema em questão.

Detalhes adicionais

O que mais pode ser feito para enfeitar os cards? Já temos bordas arredondadas e sombras, vamos também inserir gradiente ao fundo.

Em Swift, o gradiente é, na verdade, uma camada que pode ser acrescentada a uma view. O gradiente, que é do tipo "CAGradientLayer", possui alguns atributos, como: cores, localizações, ponto de início, ponto de término, quadro e outros atributos pertencentes a objetos do tipo "layer".

O gradiente pode ser inserido no card dentro do "didSet", assim como a sombra e o arredondamento das bordas. O código a seguir exemplifica como isso pode ser feito:

Criando o gradiente e inserindo na "containerView".

É importante fazer algumas considerações sobre o código acima. As cores do gradiente são do tipo CGColor, é importante levar isso em consideração ao programar. Os atributos "startPoint" e "endPoint" indicam o ponto de início e fim da linha que serve de direção para o gradiente. O atributo "locations" indica os pontos em que as cores devem ser posicionadas no gradiente. Por fim, nesse caso, foi necessário também indicar o arredondamento das bordas do gradiente, para que este acompanhasse o desenho do card.

A "containerView", ao final, parece-se com isso:

Os cards estão prontos! Ao executar o código, podemos observar o resultado:

Resultado dos cards.

Conclusão

Os cards apresentados nesse tutorial são apenas exemplos do que se pode fazer através das Table Views, eles podem ser adaptados para diferentes situações conforme a necessidade. As Table Views, apesar de parecerem simples, são muito versáteis e podem ser aplicadas de diversas formas, os cards são apenas um exemplo das muitas possibilidades que as Table Views nos oferecem.

--

--