코드로 UI를 설계하다가 tableView.frame = bounds 이건 어떻게 이해하면 되나요?
331
작성한 질문수 8
테이블뷰를 코드로 설계하는 중에,
테이블뷰의 위치와 크기를 뷰 전체에 넣을려고 했는데,
오토레이아웃 말고
tableView.frame =view.bounds 이렇게해도 되더라구요
그래서 찾아보니까
frame은 superView를 기준으로 자기 위치 (origin)과 크기 (size)를 나타내느데
여기에 bounds를 대입한다? bounds는 자기를 기준으로 하는 위치와 크기잖아요?
그럼 tableView의 frame에 bounds를 대입한다는 것은 앞으로 tableView의 frame은 bounds와 같이 동작한다? 이렇게 이해하면 되나요?
좀 더 찾아보니까 bounds는 viewPort 같은거라고 하더라구요 화면을 바라보는 창문? 그럼 tableView.frame = view.bounds는 tableView의 frame의 위치와 크기에 view를 바라보는 전체 크기? 위치?를 대입한다?
이게 무슨 뜻인지 알려주세요~
답변 1
0
네 안녕하세요 듀듀 님.
화면을 배치하는 방식에는
(1) 아주 예전부터 사용하던 프레임 방식이 있었고,
(첫 아이폰 출시 화면 크기.. 화면 크기 고정된 방식에서 화면 설계 유용)
(중간에 또 다른 방식도 존재하기는 했었긴 한데 중요하지는 않고요)
(2) 첫 아이폰이 출시한 이후에 화면크기가 다변화 되면서..
여러크기의 화면에도 화면을 배치하는 방법이 필요해져서 오토레이아웃이 등장했습니다.
오토레이아웃의 경우 뷰 끼리의 위치를 잡으면, 알아서 크기를 계산 / 조정해 주는 방식이라 엄청 편해졌죠.
(참고로 활용 앱 28강 내용에서 설명드렸는데, 지금쯤 다시 보시면 이해가 되실 것 같긴해요.)
뷰를 위치시킬때 프레임방식도 여전히 사용 가능하고, 오토레이아웃도 가능합니다. (다만, 일반적으로 통일해서 배치해야 겠죠.)
무튼 질문의 내용은
tableView.frame =view.bounds 이 코드가 무엇을 의미하느냐? 의 내용이신데
테이블뷰.frame (위치 + 크기) = 데이터값
(오른쪽에 있는 데이터값을 왼쪽의 속성에다가 할당 한다는 내용은 당연히 아실테니)
여기서 왼쪽에 할당하고 싶은 오른쪽의 데이터 값은.. 여기에서는 위치 + 크기의 데이터가 필요합니다.
그런데, view.bounds라고 한번 viewDidLoad 같은 곳에서 출력을 해보셔도 되는데,
(예시: print(self.view.bounds) )
bounds라는 정보는 듀듀님이 직접 말씀하셨듯이 "자기를 기준으로 하는 위치와 크기" 정보 입니다.
자기 기준의 위치는 무조건 0, 0 (영 컴마 영)이 시작점이고, 크기는 view의 크기 이겠죠.
그리고 여기서 view의 크기는 기본 뷰컨트롤러가 가진 self.view (기본뷰)의 크기 입니다.
(따라서 쉽게 말씀드리면... 현재 화면에서 듀듀님이 보시는 기기 화면의 크기를 의미합니다.)
결국
tableView.frame = view.bounds
코드의 경우, 0, 0 (영컴마 영)의 위치를 시작점(위치)으로 기본 뷰컨트롤러가 가진 self.view (기본뷰)의 크기 만큼(크기)으로 테이블뷰의 크기를 잡아라 라는 의미를 가지고 있는 것입니다.
그리고 이런 방식의 프레임을 통한 뷰의 배치 코드는...
일반적으로 화면 전체를 차지하게 되는 "테이블뷰"나 "컬렉션뷰".. 등.. 굳이 4개의 오토레이아웃을 잡는 것보다 한줄의 코드를 통한 뷰의 배치가 더 편할때 (오토레이아웃 대신) 많이 사용하는 방법입니다.
감사합니다. :)
수강연장부탁드려도될까요..
0
43
2
Drawing Cycle 관련 질문
0
72
1
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
97
2
델리게이트 패턴 관련 질문
0
68
2
수강 기간 연장 부탁드릴 수 있을까요?
0
65
1
활용 앱 57강 질문입니다.
0
55
1
활용 앱 30강 에러 질문입니다
0
64
2
기초앱 17강 Contraints 설정 질문입니다.
0
67
2
기초 앱 4강 Type Any -> UIButton
0
67
2
34강 유용한 앱 추천에 나오는 UIKitViewer에 대해서 질문이 있습니다
0
80
1
깃에 코드는 올려도 된다고 하셨는데
0
110
1
수강기간 연장신청 드려도 될까요?
0
84
1
수강 기간 연장 부탁드려도 될까요?
0
120
2
수강 기간 연장 신청 요청드립니다.
0
131
2
playground에서 상단 실행?아이콘 회전 관련하여...
0
136
1
활용앱53강에서 질문있습니다.
0
165
2
Project 명칭 변경방법이 궁금합니다.
0
140
1
override 에 대해서 궁금한 것이 있습니다.
0
125
2
섹션8] 코드 리팩토링 문의
0
100
1
xcode 에서 ios 버전 선택 및 시뮬레이터 관련 질문
0
568
2
수강 기간 연장 부탁드려도 될까요?
0
131
2
뷰모델의 상태변화 와 didSet
0
98
1
@Sendable 키워드
0
95
1
클로저
0
107
2





