반응형
collectionView가 로딩될 때, UICollectionViewDelegateFlowLayout 에서 cell의 size를 미리 지정해줘야 되는데,
높이가 고정값이 아닌 변수로 설정을 하고싶었다.
cell 내 view 혹은 stackView의 높이가 수치로 명확하게 선언이 되는 것들은 systemLayoutSizeFitting 를 사용하여 간단하게 처리가 가능했다.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let cell = self.collectionView(collectionView, cellForItemAt: indexPath)
return cell.systemLayoutSizeFitting(CGSize(width: collectionView.frame.width, height: UIView.layoutFittingExpandedSize.height), withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel)
}
하지만 위 방법은, cell 내 contents 의 높이가 정확하게 명시되어 있지 않은 경우, 알 수 없는 공백이 생기면서 레이아웃이 이상하게 뜨더라.
상품정보 더보기 버튼을 누르면 cell의 높이가 contents 크기에 맞춰 늘어나도록 해주어야 했는데,
이런 저런 방법들을 시도해보았지만 딱히 마땅한 방법이 없었다.
그래서 이게 좋은 방법인지는 모르겠으나 그냥 버튼 클릭 시 늘어나야할 contents 의 height 값을 콜백으로 넘겨주어 컬렉션뷰를 reload 해주었다.
728x90
반응형
'Swift iOS 앱 개발 > 실전 Swift' 카테고리의 다른 글
프리온보딩 iOS 챌린지 Week 1-2 (0) | 2022.12.07 |
---|---|
프리온보딩 iOS 챌린지 Week 1-1 (0) | 2022.11.28 |
[Swift iOS] Custom Scrollable Sticky Tab Bar 만들기 (0) | 2022.09.15 |
[Swift iOS] UICollectionView - Storyboard (0) | 2022.06.15 |
Volumetric Internal Project (0) | 2021.01.21 |