ScrollView + StackView 조합을 이용해 TableView처럼 사용하기

French Marigold·2023년 7월 13일
0

iOS

목록 보기
1/3

TableView 사용의 장점


우선 TableView는 테이블 뷰 셀을 재사용하여, 보여줘야 할 데이터의 구조를 "재활용"하는 방식을 사용한다.
이는 TableView의 굉장히 큰 장점인데, 데이터가 엄청나게 많아도
TableView는 화면을 채울만큼만 인스턴스를 생성하기에 메모리 용량 걱정을 하지 않아도 되기 때문이다.


TableView 사용의 단점


하지만 셀을 "재사용"하는 것은 TableView의 단점이기도 하다.
우선 사용했던 셀을 다음 줄에서도, 그 다음 줄에서도, 10번째 줄에서도 계속 똑같이 사용하기 때문에
각각의 셀의 구성이나 형태를 다르게 만들고자 할 때에는 TableView가 적합하지 않다.

그림을 통해 자세히 알아보자.

스크린샷 2023-07-05 오후 5 54 50

이미지, 두꺼운 폰트, 작은 글씨체의 셀이 계속 반복되는 것을 확인할 수 있다.
TableView는 사용했던 셀을 다시 "재사용"하기 때문에 셀의 형태와 구성은 동일하다.

반면에 다음과 같은 그림을 보자.


스크린샷 2023-07-05 오후 7 17 00

위의 날씨 앱을 보면 각각의 구성요소가 모두 형태가 다른 것을 확인할 수 있다.
첫 번째 영역은 날씨 Label만 존재하고, 두 번째 영역은 여러 날씨 데이터를 가로로 스크롤하여 확인할 수 있게끔 되어있으며
세 번째 영역은 여러 날씨 데이터를 세로로 스크롤하여 확인할 수 있다.
따라서 위와 같은 날씨 앱은 "셀을 재활용하는 방식을 채택한 것이 아닌" 각각의 객체들이 서로 다른 형태를 띄도록 만들어준 것이다.
이 때 사용되는 방법이 바로 ScrollView와 StackView의 조합을 이용하는 것이다.


ScrollView와 StackView의 조합


ScrollView와 StackView를 조합하여 TableView처럼 세로로 스크롤할 수 있게 만들되,
셀을 재활용하여 반복되는 셀을 사용하는 것이 아닌 "각 객체의 구성요소가 서로 다르게끔" 만들어줄 수 있다.
방법은 다음과 같다.

  1. 먼저 스택 뷰에 올릴 뷰들을 생성한다.
스크린샷 2023-07-05 오후 6 47 20
  1. 스택 뷰를 올린다. 이 때 arrangedSubview를 이용해서 뷰들을 바로 올리지 않도록 한다.
스크린샷 2023-07-05 오후 6 48 53
  1. 스크롤 뷰 생성
스크린샷 2023-07-05 오후 6 48 53
  1. 제약 걸기. 이 때 ScrollView의 스크롤 방향이 가로 방향이면 heightAnchor로, 세로 방향이면 widthAnchor로 설정해야 한다.
스크린샷 2023-07-05 오후 6 48 53
  1. 그 후 아까 만들어 놓았던 UIView들을 스택 뷰에 차례대로 채워 넣으면 된다.
스크린샷 2023-07-05 오후 6 56 42

결과물


각각의 객체가 서로 다른 형태를 띄고 있는 것을 확인할 수 있다.




정리하자면 재사용셀을 사용해야 하거나 받아야할 데이터가 너무 많을 때TableView를 사용하고
재사용셀을 사용하지 않고 서로 다른 여러 객체들을 띄워야 할 때에는 ScrollView + StackView 조합을 사용하면 된다.


출처

profile
꽃말 == 반드시 오고야 말 행복

0개의 댓글