Skip to content

[UIKit] UICollectionView의 Cell Dynamic Size 지정해주기

Ari edited this page Jul 24, 2022 · 1 revision

아이템의 키워드를 나타내는 Cell을 구현중이였는데, 문자열의 길이에 따라 Cell의 너비도 동적으로 조절되었으면 했다. 동적으로 사이징처리를 하는 방법을 찾아보았다.

구글링을 해서 찾다보면 너무 복잡한 방법들만 설명하고 있다.

좀 더 간단하고 쉬운 방법이 없나 찾던 와중에 내가 원하던 솔루션을 찾게 되었다.

해결방법

  • Cell을 nib 파일을 만들어 구현한다.
  • 그리고 UICollectionView의 flowLayout중 Item Size를 자동으로 맞출 수 있도록 해주었다.
private lazy var collectionView: UICollectionView = {
    let flowLayout = UICollectionViewFlowLayout()
    flowLayout.scrollDirection = .horizontal
    flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 20)
    flowLayout.minimumInteritemSpacing = 20
    flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize // 이 한줄이면 된다...!!
    flowLayout.minimumLineSpacing = 20
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)
    collectionView.backgroundColor = .clear
    collectionView.showsHorizontalScrollIndicator = false
    collectionView.registerNib(KeywordCell.self)
    return collectionView
}()

이렇게 해주면 셀 안의 Label 너비에 맞게 사이징 처리가 된다.


Clone this wiki locally