반응형
추후 업데이트 예정
다른 포스팅과 내용 중복 가능
collectionView 설정
// collectionView 선언(@IBOulet이 아닌 code)
private lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal // 스크롤 방향
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.isPagingEnabled = true // 페이징 기능(width에 딱 맞게) False시 구분 없이 스크롤
collectionView.showsHorizontalScrollIndicator = false // 스크롤바 숨기기
return collectionView
}()
// ->
// 페이징 기능(width에 딱 맞게) False시 구분 없이 스크롤
collectionView.isPagingEnabled = true
// 스크롤바 숨기기
collectionView.showsHorizontalScrollIndicator = false
UICollectionViewDelegate, UICollectionViewDataSource
(collectionView.delegate와 collectionView.dataSouce = self 필수)
// 아이템 수
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return "셀당 아이템 수"
}
// cell 내용
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell 고윳값", for: indexPath)
cell.backgroundColor = .blue // 구분용
return cell
}
UICollectionViewDelegateFlowLayout
// 콜렉션 뷰의 크기
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
// 해당 예시는 view의 크기에서 32.0 만큼 뺸 넓이
return CGSize(width: collectionView.frame.width - 32.0, height: collectionView.frame.width - 32.0)
}
// 콜렉션 뷰 section의 inset
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
// section에 inset을 주어 레이아웃 구성 (없으면 cell이 cell의 크기에 따라 한쪽에 붙는 현상이 생긴다.)
return UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 16.0) // 중앙 정렬을 위한 코드
}
// cell사이의 최소 간격 (첫번째, 마지막에는 적용되지 않는다.)
// section별 적용 가능한듯.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 32.0
}
// 헤더 사이즈 설정
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize()
}
반응형
'iOS > UIKit' 카테고리의 다른 글
[iOS] Transform을 이용해 KeyBoard 이벤트 처리 (0) | 2022.03.02 |
---|---|
[iOS] collectionView 헤더(Header) 커스텀 및 사용 (0) | 2022.02.22 |
[iOS] tableView의 메서드, 프로퍼티 일부 정리 (0) | 2022.02.22 |
[iOS] TableView의 prefetching 기능 (0) | 2022.02.22 |
[iOS] StoryBoard를 쓰지 않고 코드로 작성하기 (0) | 2022.02.22 |