Frame이란?
View의 위치와 크기를 나타내는 것으로 위치는 Super View의 좌표계를 기준으로 나타난다. 크기는 해당 뷰의 영역을 모두 감싸는 사각형이다.
frame의 위치(origin)값을 변경하면 subView도 함께 움직이며, 뷰 자체를 이동한다.
언제 사용? 🤔
UIView의 위치 및 크기를 설정할 때 사용한다!
Bounds란?
View의 위치와 크기를 나타내는 것으로 origin 기준점이 자기 자신의 좌표계를 가리킨다. width와 height의 기준은 뷰 영역 자체이다.
자기 자신의 원점이 좌표의 시작점이다.
Bounds의 위치(origin)값을 변경하면 뷰 자체가 아닌 화면이 보여지는 창이 이동한다. 즉 자기 자신은 가만히 있고 subView들이 반대 좌표로 이동한다고 생각하면 된다.
언제 사용? 🤔
View를 회전(transfomation)한 후 View의 실제 크기를 알고 싶을 때 사용한다.
View 내부에 그림을 그릴 때(drawRect) 사용한다.
ScrollView에서 스크롤을 할 때 사용된다. -> ScrollView의 SubView 중 어디를 보여줄지 정하는 것!
정리
Frame과 Bounds 모두 뷰의 위치와 크기를 나타내는것인데,
Frame은 위치의 기준점이 해당 뷰의 Super View. 즉, 바로 한단계 위 상위뷰를 기준으로 좌표가 시작된다. 그리고 뷰의 크기는 해당 뷰를 모두 감싸는 사각형이다. origin값을 변경하면 subView와 함께 설정한 값만큼 뷰 자체가 이동한다.
Bounds는 기준점을 자기자신을 기준으로 좌표를 시작한다. 뷰의 크기는 뷰 자체의 영역이다. origin값을 변경하면 화면이 보여지는 창이 이동한다.
이러한 특성을 이용하여 frame은 UIView의 위치와 크기를 설정할 때 사용하며, bounds는 뷰의 실제크기, 뷰 내부에 그림을 그리거나 스크롤 뷰에서 뷰를 스크롤할 때 사용된다.
참고
https://babbab2.tistory.com/44
https://babbab2.tistory.com/45
'iOS > Interview Questions' 카테고리의 다른 글
[iOS] 앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체 (0) | 2022.10.13 |
---|---|
[iOS] App thinning(앱 시닝) 이란? (0) | 2022.10.13 |
[iOS] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체 (0) | 2022.10.12 |
[iOS] 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체 (0) | 2022.10.11 |
[iOS] 실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것 (0) | 2022.10.11 |