공통점
- UIView의 instance property이다
- CGRect를 type으로 가진다
- 즉, frame과 bounds는 일단 사각형으로 그려진다 → origin과 size
- 즉, x좌표 y좌표, width(너비), height(높이)를 가진다
차이점
Frame
정의
💡 supreView의 좌표계에서 View의 위치 및 크기를 나타냄

즉, 바로 한칸 위 뷰를 기준으로 자신의 view의 위치와 크기를 나타낸다
frame의 origin(x,y 좌표)
SuperView의 원점을 (0,0)으로 놓고 원점으로부터 얼마나 떨어져있는지를 의미한다
→SupreView의 원점이 곧 좌표의 시작점(0,0)이 됨
frame의 size(width, height)
View 영역을 모두 감싸는 사각형
→ frame의 size는 View 자체의 크기가 아니라 View가 차지하는 여역을 감싸서 만든 사각형
frame의 origin 값을 변경하는 경우
supreview의 frame의 origin 값을 변경하거나 변경된다면 subView도 같이 이동한다
Bounds
정의
💡 View의 위치와 크기를 자신만의 좌표시스템안에서 나타남

즉, 자기자신의 원점을 (0,0)으로 놓는다
→ 따라서 View를 처음 생성하면 bounds의 origin은 무조건 x = 0.0, y = 0.0이다
bounds의 origin(x, y 좌표)
자신의 원점을 (0,0)으로 놓는다
bounds의 size(width, heigth)관련
view 자체의 영역을 나타낸다
bounds의 origin 값을 변경하는 경우
내 view의 viewport좌표를 움직인다는 것
→ 내 View에 SubView의 어디를 담을지 움직이는 것
→ 즉 해당 view의 관점에서 origin만큼 viewport가 이동한다
→ subview들이 반대 좌표로 가는 것이 아니라 View가 subView를 바라보는 시점(viewport)가 달라진것
- scrollView를 생각하면 쉽게 이해할 수 있다
- scrollView는 자신보다 더 큰 데이터를 보뎌주는데
- scroll을 하면 bound가 이동을 한다
- 이 때 bounds가 이동한다 = view가 subView를 바라보는 시점이 이동하는 것
참고사이트
iOS) Frame vs Bounds 제대로 이해하기 (2/3)