[UIKit] UITableView vs UICollectionView
TIL(Today I Learned)
UITableView
- 단일 열에 배열된 행을 사용해 데이터를 표시하는 뷰
- UIScrollView를 상속
- 목록 스타일을 구현할때 사용되며 수직 스크롤만 가능
- 테이블의 개별 항목을 구성하는 Cell은 UITableViewCell
- indexPath값을 통해 Cell을 구분
- 여러 행은 하나의 섹션 안에 구성될 수 있고, 각 섹션은 Header와 Footer를 포함
- Plain, Grouped, insetGrouped 세가지의 스타일이 존재
- 장점
- cell을 재사용할 수 있기떄문에 cell을 초기화하는 부담 최소화
- 메모리를 절약하여 많은 데이터를 효율적으로 표시 가능
- 아쉬운 점
- 여러 디자인 요소를 추가하거나, header / footer 이외의 위치에 디자인 제한
- cell 내부에 뷰를 별도로 추가하거나 강제로 섹션을 나누는 방법 필요
- 표시하려는 cell을 반환하기 전에 메세지 크기에 많은 cell의 높이를 계산하여 UITableView에 전달해야함
- 성늘을 향상시키기 위해서는 별도의 캐시를 마련하여 cell의 높이 관리가 필요
CollectionView
- 여러 데이터를 관리하고 커스텀 가능한 레이아웃을 사용하여 사용자에게 보여줄 수 있는 객체
- UIScrollView를 상속
- 수직 / 수평 스크롤이 모두 가능
- 테이블 뷰에서 할 수 있는 모든 표현 가능
- 색현을 가질 수 있으며 indexPath값을 이용하여 cell을 구분
- 컬렉션의 개별 항목을 구성하는 Cell은 UICollectionViewCell
-
UICollectionViewDelegateFlowLayout 프로토콜을 통해 본인이 원한느 모양으로 레이아웃을 커스텀해서 사용 가능
- 장점
- UITableView에서 구현하기 어려웠던 여러가지 레이아웃 커스터마이징 기능을 제공
- 별로도 레이아웃 서브클래스를 만들지 않고, UICollectionViewFlowLayout을 사용하는 것만으로도 기본적인 그리드 레이아웃을 구현 가능
- UITableView에서 구현하기 어려웠던 여러가지 레이아웃 커스터마이징 기능을 제공
- 아쉬운 점
- TableView에 비해 저점과 고점이 모두 높음
결론
- 간단한 데이터만 보여줘도 되는 경우에는 테이블뷰로 충분히 구현 가능, 다만 셀의 모양을 커스텀하길 원하거나 추후 디자인의 수정 가능성이 높다면 컬렉션뷰를 사용 권장
댓글남기기