idghst.dev
article thumbnail
Published 2023. 2. 22. 09:00
[ iOS ] CollectionView - 3 iOS
728x90
반응형

1. 셀 데이터 / 셀 배치

(DataSource → DiffableDataSource)

  • viewDidLoad 함수와 같은 레벨에 작성
  • UICollectionViewDiffableDataSource  Section, Item 의 타입은 Hashable
    • 따로 작성한 구조체의 타입이 Hashable 인지 확인
<swift />
var dataSource: UICollectionViewDiffableDataSource<Section, Item>! typealias Item = AppleFramework // 별명 부여 enum Section { case main }

 

  • viewDidLoad 함수 내부에 작성
<swift />
dataSource = UICollectionViewDiffableDataSource<Section, Item>(collectionView: collectionView, cellProvider: { collectionView, indexPath, item in guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "[앱id]CollectionViewCell", for: indexPath) as? [앱id]CollectionViewCell else { return nil } cell.configure(item) return cell }) var snapshot = NSDiffableDataSourceSnapshot<Section, Item>() snapshot.appendSections([.main]) snapshot.appendItems(list, toSection: .main) dataSource.apply(snapshot) collectionView.collectionViewLayout = layout()

 

  • viewDidLoad 함수와 같은 레벨에 작성
<swift />
private func layout() -> UICollectionViewLayout { // 가로 : 가로 길이의 1/3 // 세로 : 세로 길이 그대로 사용 let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1/3), heightDimension: .fractionalHeight(1)) let item = NSCollectionLayoutItem(layoutSize: itemSize) // 가로: 가로 길이 그대로 사용 // 세로: 가로 길이의 1/3을 세로 길이로 설정 let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalWidth(4/9)) let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, repeatingSubitem: item, count: 3) let section = NSCollectionLayoutSection(group: group) section.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16) let layout = UICollectionViewCompositionalLayout(section: section) return layout }
728x90
반응형

'iOS' 카테고리의 다른 글

[ iOS ] Navigation  (0) 2023.02.27
[ iOS ] Modal  (0) 2023.02.24
[ iOS ] PagingView  (0) 2023.02.20
[ iOS ] CollectionView - 2  (0) 2023.02.17
[ iOS ] Assistant 모드  (0) 2023.02.13
profile

idghst.dev

@idghst.dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!