Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

Swift에서 UICollectionView 사용하는 방법: 코드로 구현하는 완벽 가이드

Swift에서 컬렉션 뷰(UICollectionView)를 사용하려면 가장 먼저 컬렉션 뷰 인스턴스를 생성해야 합니다. 스토리보드에 드래그 앤 드롭으로 추가하는 방법과 코드로 직접 작성하는 방법 두 가지가 있습니다.

컬렉션 뷰를 생성한 후에는 클래스가 UICollectionViewDataSourceUICollectionViewDelegate 프로토콜을 반드시 채택해야 합니다. 전자는 컬렉션 뷰에 데이터를 공급하는 역할을 하고, 후자는 사용자의 터치 등 상호작용 이벤트를 처리하는 역할을 합니다.

또한 셀의 크기나 레이아웃을 커스터마이징해야 하는 경우에는 UICollectionViewDelegateFlowLayout 프로토콜까지 추가로 채택해야 합니다.

1. 프로그래밍 방식으로 컬렉션 뷰 생성하기

코드로 컬렉션 뷰를 만드는 과정을 살펴보겠습니다. 먼저 레이아웃 객체를 설정하고, 컬렉션 뷰를 초기화한 뒤 뷰 계층에 추가합니다.

func initCollection() {
    let layout = UICollectionViewFlowLayout()
    layout.itemSize = CGSize(width: 50, height: 50)
    let collection = UICollectionView.init(frame: self.view.frame, collectionViewLayout: layout)
    collection.dataSource = self
    collection.delegate = self
    collection.backgroundColor = colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1)
    collection.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
    self.view.addSubview(collection)
}

위 함수는 viewDidLoad() 메서드 안에서 호출해야 합니다. 컬렉션 뷰를 코드로 생성하든 스토리보드로 생성하든, dataSourcedelegate를 반드시 할당해야 합니다. dataSource는 컬렉션 뷰에 데이터를 제공하고, delegate는 사용자 동작(선택, 스크롤 등)을 관찰하고 처리합니다.

2. 섹션 수 정의하기

다음으로 컬렉션 뷰에 섹션이 몇 개 있는지 알려주어야 합니다.

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
}

3. 아이템 수와 셀 내용 정의하기

이어서 각 섹션에 포함될 아이템의 개수와, 각 셀에 어떤 데이터가 표시될지 정의합니다.

func collectionView(_ collection: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 7
}
func collectionView(_ collection: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collection.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
    cell.layer.backgroundColor = colorLiteral(red: 0.4392156899, green: 0.01176470611, blue: 0.1921568662, alpha: 1)
    return cell
}

numberOfItemsInSection 메서드는 해당 섹션에 표시할 아이템 개수를 반환하고, cellForItemAt 메서드는 재사용 큐(reuse queue)에서 셀을 꺼내 필요한 데이터를 설정한 후 반환합니다.

4. 셀 크기 커스터마이징하기 (선택 사항)

필요에 따라 아이템별로 서로 다른 크기를 지정할 수도 있습니다. 이 기능을 사용하려면 앞서 언급한 UICollectionViewDelegateFlowLayout 프로토콜을 채택해야 합니다.

func collectionView(_ collection: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let size = CGSize(width: 200, height: 50)
    return size
}

실행 결과

위 코드를 실제 기기나 시뮬레이터에서 실행하면 초록색 배경 위에 진홍색 셀들이 그리드 형태로 배치된 컬렉션 뷰가 화면에 나타납니다.

Swift에서 UICollectionView 사용하는 방법: 코드로 구현하는 완벽 가이드

정리하면, Swift에서 컬렉션 뷰를 사용하는 핵심 흐름은 ① 컬렉션 뷰 생성 → ② dataSource/delegate 할당 → ③ 섹션 및 아이템 수 반환 → ④ 셀 구성 → ⑤ (선택) 레이아웃 커스터마이징입니다. 이 순서만 기억하면 테이블 뷰와 유사한 패턴으로 손쉽게 컬렉션 뷰를 구현할 수 있습니다.