구현 코드
https://github.com/ryr0121/UIKitPractice/tree/main/CustomCollectionViewPractice
구현 과정
1. Storyboard에 CollectionView 추가
2. 추가한 CollectionView를 @IBOutlet으로 연결
3. CollectionView에 사용할 커스텀 Cell을 Xib으로 생성 및 정의
3-(1) CollectionViewCell을 xib으로 생성
3-(2) Cell 내부 정의
4. CollectionView를 사용하기 위한 코드 추가 (프로토콜 채택, 커스텀 셀 등록 등)
class ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
setupCollectionView()
}
func setupCollectionView() {
// CollectionView를 사용하기 위한 필수 프로토콜 채택
collectionView.dataSource = self
collectionView.delegate = self
// CollectionView에 사용할 커스텀 셀 등록
collectionView.register(UINib(nibName: "MainCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "MainCollectionViewCell")
}
}
extension ViewController: UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// CollectionView에 보여질 셀의 개수 반환
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// CollectionView에 보여질 셀 반환
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainCollectionViewCell", for: indexPath) as? MainCollectionViewCell else { return UICollectionViewCell() }
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
// 셀의 크기 반환
return CGSize(width: 100, height: 100)
}
}
추가
Storyboard에서 CollectionView의 스크롤 방향 조정하기
Vertical | 수직 스크롤 (기본값) |
Horizontal | 수평 스크롤 |
* 한 줄짜리 수평 스크롤이 가능한 CollectionView를 만들기 위해서는, CollectionView의 높이가 셀의 높이의 2배보다 작아야 함
'iOS > UIKit' 카테고리의 다른 글
[iOS] "SDK does not contain 'libarclite' ..." 트러블 슈팅 (0) | 2024.03.07 |
---|---|
[iOS] Code-Base로 UIStackView 사용하기 (0) | 2023.10.18 |
[Storyboard] 커스텀 Cell을 가진 TableView 만들기 (0) | 2023.10.11 |
[Code-Base] CollectionView 안에 CollectionView 넣기 (0) | 2023.10.10 |
[iOS] Content Hugging Priority와 Content Compression Resistance Priority (0) | 2023.01.03 |