layout: post
title: "May 17, 2021, TIL (Today I Learned) - Collection View vs TableView"
summary: "iOS 커리어 스타터 캠프 2기"
author: inwoodev
date: '2021-05-17 22:35:23 +0530'
category: ['Swift_iOS', 'TIL', 'View']
thumbnail: /assets/img/posts/light-bulbs.jpg
keywords: ios, swift, collectionView
permalink: /blog/TIL(Today I Learned)/44
usemathjax: true
테이블뷰
- 부스트코스 설명
컬렉션뷰
- 부스트코스 설명
공통점
차이점
👻 😆 컬렉션뷰를 학습하면서 앞서 배웠던 테이블뷰와 비슷한 점이 많지 않았나요? 그렇다면 컬렉션뷰 셀과 테이블뷰 셀에는 어떠한 차이점이 있는지 알아볼까요?
데이터소스
컬렉션뷰 데이터소스 객체는 컬렉션뷰와 관련하여 가장 중요한 객체이며, 필수로 제공해야 합니다. 컬렉션뷰의 콘텐츠(데이터)를 관리하고 해당 콘텐츠를 표현하는 데 필요한 뷰를 만듭니다. 데이터소스 객체를 구현하려면 UICollectionViewDataSource
프로토콜을 준수하는 객체를 만들어야 합니다. 그리고 데이터소스 객체는 최소한 collectionView(_:numberOfItemsInSection:)
과 collectionView(_:cellForItemAt:)
메서드를 구현해야 하며 나머지 메서드는 선택사항입니다.
델리게이트
컬렉션뷰 델리게이트 프로토콜은 컬렉션뷰에서 셀의 선택 및 강조표시를 관리하고 해당 셀에 대한 작업을 수행할 수 있는 메서드를 정의합니다. 이 프로토콜의 메서드는 모두 선택사항입니다.
DataSource :
Delegate :
UICollectionViewDataSource
[dequeueReusableCell(withReuseIdentifier:for:)](<https://developer.apple.com/documentation/uikit/uicollectionview/1618063-dequeuereusablecell>)
to get a cell for an item in the collection view. (TableView, CollectionView)[dequeueReusableSupplementaryView(ofKind:withReuseIdentifier:for:)](<https://developer.apple.com/documentation/uikit/uicollectionview/1618068-dequeuereusablesupplementaryview>)
method to get a supplementary view requested by the layout object. (Only CollectionView)Asks your data source object to provide a supplementary view to display in the collection view.
테이블뷰
테이블 뷰는 plain과 grouped 스타일 중 한 가지의 스타일을 가질 수 있습니다.
테이블 뷰에서는 하나의 열에 여러 행을 표시하는 형식이기 때문에, 셀의 모습을 행에 맞춰서 디자인합니다.
컬렉션뷰
반면, 컬렉션뷰는 열과 행을 만들 수 있기 때문에, 꼭 행의 모습이 아니더라도 다양한 모습으로 셀을 디자인할 수 있습니다. 컬렉션 뷰 셀의 가장 큰 특징이기도 하죠.
또한 컬렉션 뷰는 레이아웃 객체가 있습니다. 기존에 제공하는 flow layout을 사용해도 괜찮지만, 본인이 원하는 레이아웃 모양을 custom layout을 만들어서 사용합니다. 이를 담당하는 프로토콜은UICollectionViewDelegateFlowLayout 입니다.
tableView - Returns an index path representing the row and section of a given table-view cell.
collectionView
- Gets the index path of the specified cell.
스토리, 알수도 있는 사람 - 컬렉션 뷰
타임라인 - 테이블 뷰
컬렉션뷰에서 다 되는데 왜 테이블뷰랑 나누어져있을까?
테이블 형태가 편하고 많이 쓰여서 만들어놓은 거 아닐까?
차이점: 레이아웃
컬렉션 뷰는 열과 행을 만들 수 있기 때문에 꼭 행의 모습이 아니더라도 다양한 모습으로 셀을 디자인할 수 있다.
테이블뷰를 쓰다가 불편한 점이 있어서 컬렉션뷰를 만든 게 아닌가? (디자인적 요구 업그레이드)
컬렉션뷰로 다 할 수 있는데 테이블뷰가 왜 있을까요?
Major disadvantages of using UICollectionView is auto sizing of your cells, we don not really need auto sizing that much so it’s not that big of a problem. It takes a lot of trial and error to get auto sizing to work correctly ( not saying I’m good at it ). UITableView wins here as all you have to do is return UITableView automatic dimensions for the height of your row in each one of your cells.
So to sum this up, if you need something standard like most table views in iOS I will choose the UITableView, but if you need more control over your layout, go with UICollectionView.
https://medium.com/@nitpaxy/swift-3-uicollectionview-vs-uitableview-9909bbc0ec66
테이블뷰를 기본으로 알고, 컬렉션뷰를 가면 좋다.
테이블뷰 많이 만들어 보면서 연습해보면 좋다.
이번 프로젝트에서 컬렉션뷰를 꼭 써보지 않아도 괜찮다.
[참고자료]:
[iOS] CollectionView의 이해 - TableView와 다른 점