iOS/UIKit

[iOS] collectionView 메서드, 프로퍼티 일부 정리

유훈 | Yuhun 2022. 2. 22. 20:57
반응형

추후 업데이트 예정

다른 포스팅과 내용 중복 가능

 

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()
}
반응형