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):
- Abra o Xcode e crie um novo projeto ou abra um projeto existente.
- Abra o Main.storyboard ou o arquivo onde você deseja adicionar a CollectionView.
- Arraste e solte uma CollectionView do Object Library para a tela no storyboard.
- 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. - 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:)
doUICollectionViewDelegate
. - Suplementos de Cabeçalho/Rodapé: Adicione suplementos de cabeçalho ou rodapé à CollectionView usando os métodos
collectionView(_:viewForSupplementaryElementOfKind:at:)
ecollectionView(_:layout:referenceSizeForHeaderInSection:)
. - Animações: Personalize animações de adição, remoção e reordenação de células usando métodos do
UICollectionViewDelegate
.