[iOS] Self-Sizing UICollectionView Dynamic Height 구현하기 with CompositionalLayout

kimdocs...📄·2022년 8월 1일
1

iOS

목록 보기
1/22
post-thumbnail

UITableViewautomaticDimension을 아시나요?
cell의 height를 제약조건만 맞다면, 내부의 크기에 따라 자동으로 rowHeight를 지정해주는 기능입니다.

 tableView.rowHeight = UITableView.automaticDimension
 tableView.estimatedRowHeight = UITableView.automaticDimension

UICollectionView에서는 automaticDimension을 따로 제공하지 않아 preferredLayoutAttributesFitting를 override해서 따로 구현해주어야했습니다.

그러나 CompositionalLayout 을 이용하면 UICollectionLayoutListConfiguration을 이용하여 쉽게 automatic dimension을 설정할 수 있습니다.

1. collectionView 생성

    private lazy var collectionView: UICollectionView = {
        let collectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: createLayout())
        collectionView.register(cell: CommentCell.self)
        return collectionView
    }()

2.creatLayout 구현

 	private func createLayout() -> UICollectionViewLayout {
        let sectionProvider = { (sectionIndex: Int, layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? in

            var config = UICollectionLayoutListConfiguration(appearance: .plain)
            config.showsSeparators = false

            let section = NSCollectionLayoutSection.list(
                using: config,
                layoutEnvironment: layoutEnvironment
            )

            return section
        }
        return UICollectionViewCompositionalLayout(sectionProvider: sectionProvider)
    }

https://developer.apple.com/documentation/uikit/uicollectionlayoutlistconfiguration

이제 tableView처럼 automatic height 설정이 가능합니다.
간단하죠~!?

profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

1개의 댓글

comment-user-thumbnail
2022년 8월 30일

하이요 ㅋㅋ
검색했더니 나옴 ㅋㅋ

답글 달기