class IntrinsicTableView: UITableView {
override var intrinsicContentSize: CGSize {
let numberOfRows = self.numberOfRows(inSection: 0)
// 셀의 고정된 높이 (예: 130)
let cellHeight: CGFloat = 150.0
// 테이블 뷰의 전체 높이 = 셀 개수 * 셀 높이
let totalHeight = CGFloat(numberOfRows) * cellHeight
return CGSize(width: self.contentSize.width, height: totalHeight)
}
}
코드 설명
1. override var intrinsicContentSize: CGSize
- intrinsicContentSize는 뷰의 "내재된 크기"를 반환하는 속성입니다. 이 속성은 뷰가 특정 크기를 가지지 않았을 때 뷰가 차지하려고 하는 크기를 결정합니다.
- 여기서는 테이블 뷰의 높이를 셀의 개수에 맞추어 계산하고, 그 결과로 CGSize 객체를 반환하여 테이블 뷰의 높이를 조절합니다.
2. let numberOfRows = self.numberOfRows(inSection: 0)
- numberOfRows(inSection:) 메서드를 사용하여 첫 번째 섹션의 셀 개수를 가져옵니다. 이 값은 테이블 뷰의 섹션 0에 몇 개의 셀이 있는지 나타냅니다.
3. let cellHeight: CGFloat = 150.0
- 셀 하나의 높이를 고정된 값으로 지정합니다. 이 예제에서는 각 셀이 150포인트 높이를 가지는 것으로 가정합니다.
4. let totalHeight = CGFloat(numberOfRows) * cellHeight
- 테이블 뷰의 전체 높이는 셀 개수에 셀의 고정된 높이를 곱한 값으로 계산됩니다. 예를 들어, 섹션 0에 5개의 셀이 있다면, 테이블 뷰의 높이는 5 * 150 = 750포인트가 됩니다.
5. return CGSize(width: self.contentSize.width, height: totalHeight)
- 계산된 높이와 테이블 뷰의 콘텐츠 너비(self.contentSize.width)를 사용하여 CGSize를 반환합니다. 이 값이 IntrinsicTableView의 실제 크기를 결정합니다.
'iOS > UIKIT' 카테고리의 다른 글
JSON에서 받아온 homepage 데이터는 HTML 태그 제거 (1) | 2024.10.22 |
---|---|
테이블에 3개씩 끊어서 데이터를 더보기 해주는 방법 (0) | 2024.10.21 |
HomeFeedTableViewCell에서는 navigationController에 접근할 수 없어서 문제가 발생 (0) | 2024.10.19 |
앱의 데이터 갱신하려면 어떻게 할까? (0) | 2024.10.16 |
collectionView.reloadData()는 어디에 넣을까? - 추가 (2) | 2024.10.14 |