문자열의 사이즈에 cell의 상하좌우 inset을 더한 만큼을 cell을 그릴 때마다 width로 동적으로 할당하도록 flowLayout을 설정하였다.
코드는 아래와 같다.
extension ViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let topBottomInset: CGFloat = 10
let leadingTrailingInset: CGFloat = 20
let cellHeight: CGFloat = 44 + (topBottomInset * 2)
let category = testCategoryList[indexPath.row]
let size: CGSize = .init(width: collectionView.frame.width - 10, height: cellHeight)
let attributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14, weight: .regular)]
let estimatedFrame = category.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
let cellWidth: CGFloat = estimatedFrame.width + (leadingTrailingInset * 2)
return CGSize(width: cellWidth, height: cellHeight)
}
}
실행 결과는 아래와 같다.
반응형
'Trouble Shooting' 카테고리의 다른 글
[iOS] 디바이스 회전을 감지하는 notification (0) | 2022.08.16 |
---|---|
같은 api 통신을 여러번 반복해서 다수의 데이터를 가져오고 싶을 때 (0) | 2022.05.10 |
최상단으로 스크롤 시에만 보이는 뷰 구현(아래로 스크롤 시 사라지는 뷰) (0) | 2022.04.29 |
TableViewCell 안의 버튼 액션이 작동하지 않음 (2) | 2022.02.11 |
CollectionView cell 커스텀 하기 (해 달라는 대로 다 해줬잖아...) - iOS (1) | 2021.11.24 |