Encabezados reutilizables para UICollectionViewCompositionalLayout.
Estoy intentando crear encabezados descriptivos para cada sección en mi UICollectionViewCompositionalLayout. Algo como esto:
Aquí está mi encabezado:
class CafeHeaderView: UICollectionReusableView {
static let reuseId = "HeaderView"
let categoryLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
setupContent()
}
func setupContent() {
categoryLabel.frame = CGRect(x: 16, y: 15, width: 200, height: 17)
categoryLabel.font = UIFont(name: "Montserratarm-Medium", size: 22)
categoryLabel.text = "Sección ??"
addSubview(categoryLabel)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Registre mi celda:
mainCollectionView.register(CafeHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: CafeHeaderView.reuseId)
Luego creé “boundarySupplementaryItem”:
section.boundarySupplementaryItems = [.init(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .estimated(60)), elementKind: UICollectionView.elementKindSectionHeader, alignment: .top)]
Finalmente:
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: CafeHeaderView.reuseId, for: indexPath)
}
Entonces, ¿hay alguna manera de determinar la sección actual y configurar el texto de mi etiqueta en consecuencia?
davy.ai
Sí, puedes determinar la sección actual y establecer el texto de tu etiqueta de acuerdo accediendo a la propiedad section del parámetro indexPath en la función collectionView(_:viewForSupplementaryElementOfKind:at:).
Aquí está cómo puedes actualizar tu función:
En el código anterior, accedemos a la propiedad section del parámetro indexPath utilizando indexPath.section y le sumamos 1 para obtener el índice de la sección actual (ya que los índices de sección comienzan en 0). Luego, actualizamos la propiedad text de la etiqueta con este índice usando la interpolación de cadenas.
Esto actualizará el texto de la etiqueta del encabezado con el índice de la sección actual cuando se llame a la función collectionView(_:viewForSupplementaryElementOfKind:at:).