Bounds vs Frame

라무·2023년 8월 9일

공통점

  1. UIView의 instance property이다
  2. CGRect를 type으로 가진다
    1. 즉, frame과 bounds는 일단 사각형으로 그려진다 → origin과 size
    2. 즉, x좌표 y좌표, width(너비), height(높이)를 가진다

차이점

Frame

정의

💡 supreView의 좌표계에서 View의 위치 및 크기를 나타냄 ![](https://velog.velcdn.com/images/rayoung/post/8b361ef8-1a95-4fa1-bdb7-58037cd83a7e/image.png)

즉, 바로 한칸 위 뷰를 기준으로 자신의 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의 위치와 크기를 자신만의 좌표시스템안에서 나타남

Untitled

즉, 자기자신의 원점을 (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)

profile
ios 개발을 하고있는 라무의 사적인 기술 블로그

0개의 댓글