UICollectionView

UICollectionView é uma classe do UIKit em iOS que permite exibir dados de maneira semelhante a uma tabela, mas com um layout mais flexível e personalizável. É especialmente útil para exibir coleções de itens em um grid ou layout personalizado.

Aqui estão os passos para criar e trabalhar com uma UICollectionView em um aplicativo iOS:

Criando uma CollectionView no Interface Builder (Storyboard):

  1. Abra o Xcode e crie um novo projeto ou abra um projeto existente.
  2. Abra o Main.storyboard ou o arquivo onde você deseja adicionar a CollectionView.
  3. Arraste e solte uma CollectionView do Object Library para a tela no storyboard.
  4. Crie um novo arquivo Swift para a célula da CollectionView (subclass de UICollectionViewCell). Registre a célula na CollectionView na sua classe de controlador.
  5. Crie um novo arquivo Swift para o controlador da CollectionView e associe a classe ao ViewController na Interface Builder.

Criando uma CollectionView Programaticamente em Swift:

import UIKit

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
    let dados = ["Item 1", "Item 2", "Item 3"] // Dados para a CollectionView
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Configurando o layout da CollectionView (usando o UICollectionViewFlowLayout padrão)
        let layout = UICollectionViewFlowLayout()
        layout.itemSize = CGSize(width: 100, height: 100) // Tamanho das células
        let minhaCollectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
        
        minhaCollectionView.delegate = self
        minhaCollectionView.dataSource = self
        
        // Registrando uma célula personalizada
        minhaCollectionView.register(MinhaCollectionViewCell.self, forCellWithReuseIdentifier: "MinhaCelula")
        
        // Adicionando a CollectionView à hierarquia de Views
        view.addSubview(minhaCollectionView)
    }
    
    // Implementando os métodos do protocolo UICollectionViewDelegate e UICollectionViewDataSource
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return dados.count
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MinhaCelula", for: indexPath) as! MinhaCollectionViewCell
        cell.textLabel.text = dados[indexPath.row]
        return cell
    }
}

class MinhaCollectionViewCell: UICollectionViewCell {
    let textLabel: UILabel
    
    override init(frame: CGRect) {
        textLabel = UILabel(frame: CGRect(x: 0, y: 0, width: frame.width, height: frame.height))
        super.init(frame: frame)
        contentView.addSubview(textLabel)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

Neste exemplo, uma UICollectionView é criada programaticamente e associada ao ViewController. Uma célula personalizada (MinhaCollectionViewCell) é usada para exibir os dados na UICollectionView.

Personalizando uma CollectionView:

Você pode personalizar uma UICollectionView de várias maneiras, incluindo:

  • Layout Personalizado: Use subclasses de UICollectionViewLayout para criar layouts personalizados, como grids ou layouts circulares.
  • Células Personalizadas: Crie células personalizadas para exibir dados de acordo com as necessidades do seu aplicativo.
  • Tratando Seleções: Responda aos eventos de seleção de célula usando o método collectionView(_:didSelectItemAt:) do UICollectionViewDelegate.
  • Suplementos de Cabeçalho/Rodapé: Adicione suplementos de cabeçalho ou rodapé à CollectionView usando os métodos collectionView(_:viewForSupplementaryElementOfKind:at:) e collectionView(_:layout:referenceSizeForHeaderInSection:).
  • Animações: Personalize animações de adição, remoção e reordenação de células usando métodos do UICollectionViewDelegate.