기존에는 MyClubView라는 CollectionView와 RecommendedClubView라는 TableView를 담은 MyClubMainViewController에서 MyClubView의 높이를 상수로 지정해주어 기기를 변경하거나 셀의 개수가 3-4개가 아닌 경우에는 공백이 생기거나 MyClubView 가 스크롤되는 현상이 발생하여 아래와 같이 해결하였습니다.
MyClubView
UIScreen.main.bounds.height로 코드를 작성했었는데 이 또한 SE 기기의 경우 스크롤이 되도록 화면이 밀리는 현상이 있어 이를 계산해주는 함수를 만들어서 MyClubMainViewController에서 호출하여 뷰의 높이를 지정해줄 수 있도록 하였습니다.// MARK: - 계산 함수
extension MyClubView {
func calculatedHeight() -> CGFloat {
let itemCount = itemData.count
let rows = Int(ceil(Double(itemCount) / 2.0))
let spacing: CGFloat = 10
let inset: CGFloat = 16
return CGFloat(rows) * (cellHeight + spacing) - spacing + inset
}
}
rows를 구하는 과정의 경우, itemData의 수가 홀수인 것을 생각하여 Double로 1차 캐스팅하였고 ceil을 이용해 소수점 올림 처리를 해주고, Int로 최종 캐스팅을 해주었습니다
반환되는 값은 (셀 열의 개수) * {(셀 높이) + (셀 간 세로 공백)} - (셀 간 세로 공백) + 컨텐츠 끝 공백입니다!
셀 높이를 열의 개수만큼 곱하여 마지막 공백이 중복 되었기 때문에 한 번 빼주었고, 뷰의 inset만큼 더했습니다