iOS 개발을 하다 보면 리스트 형태의 데이터를 화면에 표시해야 할 때가 자주 있습니다. 이럴 때 가장 먼저 떠오르는 컴포넌트가 UITableView와 UICollectionView입니다. 둘 다 강력하고 유용하지만, 상황에 따라 적절히 선택해야 효율적인 UI/UX를 만들 수 있습니다.
1. 공통점 📌
- 데이터를 셀 단위로 구성
- 스크롤 가능
- 재사용 가능한 셀 시스템 제공
- DataSource / Delegate 패턴 사용
- 커스터마이징 가능 (헤더/푸터, 셀 크기 등)
2. UITableView의 특징 📝
| 항목 | 설명 |
|---|
| 구조 | 수직 스크롤의 단일 열 (Column) |
| 섹션 지원 | 있음 (header/footer 포함) |
| 셀 높이 | 고정 또는 동적 지정 가능 |
| 적합한 UI | 단순한 리스트, 채팅 목록, 설정 화면 등 |
| 커스터마이징 | 제한적이지만 실용적 |
| 코드 작성량 | UICollectionView보다 간결함 |
✅ 적합한 경우
- 뉴스 피드, 채팅 UI, 전화번호부처럼 단순한 리스트 중심의 UI
- 빠르게 구현이 필요할 때
3. UICollectionView의 특징 🧩
| 항목 | 설명 |
|---|
| 구조 | 수직/수평 스크롤, 다중 열 지원 |
| 레이아웃 | 자유로운 커스터마이징 가능 (FlowLayout, Compositional 등) |
| 셀 크기 | 셀마다 다르게 지정 가능 |
| 적합한 UI | 갤러리, 그리드 뷰, 카테고리 선택 UI 등 |
| 커스터마이징 | 매우 유연하고 강력 |
| 코드 작성량 | 상대적으로 복잡함 |
✅ 적합한 경우
- 이미지 그리드, 태그 리스트, 가로 스크롤 캐러셀 등 다양한 레이아웃이 필요한 경우
- 복잡한 레이아웃이나 셀 크기 제어가 필요한 경우
4. 어떤 걸 선택해야 할까? 🎯
| 조건 | 추천 컴포넌트 |
|---|
| 단순 리스트 | UITableView |
| 동적 크기의 셀 | UICollectionView |
| 가로 스크롤 | UICollectionView |
| 복잡한 그리드 레이아웃 | UICollectionView |
| 구현 속도, 유지보수 | UITableView |
| iOS 13+ & Compositional Layout 사용 | UICollectionView |
5. 결론 🏁
| UITableView | UICollectionView |
|---|
| 빠른 구현, 간결한 구조 | 유연한 레이아웃, 고급 UI 가능 |
| 단일 열 리스트에 적합 | 그리드 또는 다양한 형태의 레이아웃에 적합 |
| 코드가 간단하고 가독성 높음 | 더 많은 설정과 코드가 필요함 |
📌 Tip: 처음에는 UITableView로 시작하되, UI 요구사항이 복잡해질수록 UICollectionView로 전환을 고려하세요.
✅ 참고 예시
- UITableView 예: 메시지 앱, 설정 화면
- UICollectionView 예: 사진 갤러리, 스토어 UI, 태그 선택 UI
둘 다 잘 다룰 줄 아는 것이 iOS 개발자로서의 큰 무기입니다. 상황에 맞는 선택으로 더 깔끔하고 유연한 앱을 만들어보세요!