[iOS]Frame과 Bounds의 차이

정의

Frame

Frame

  • "상위 뷰의 좌표계에서 뷰의 위치와 크기를 설명하는 프레임 사각형"

 

Bounds

Bounds

  • "자체 좌표계에서 뷰의 위치와 크기를 설명하는 경계 사각형"

 

 

기능

Frame

  • 핵심은 "Super View(상위 뷰)의 원점으로부터 얼만큼 떨어져 있는지를 나타낸다."

Zedd님 블로그 사진

  • 위의 사진을 참고해서 핵심을 살펴보면 바로 이해할 수 있다.
  • 또 한가지 더 있다.
  • 뷰의 사이즈를 보는 관점이 다르다. 아래 사진을 살펴보자.

유셩장님 블로그 사진

  • 위 사진처럼 Frame은 View의 Size를 오른쪽과 같이 고유의 사각형으로 측정이 된다.

 

Bounds

  • 핵심은 "해당 View가 이동하지 않고, Sub View(하위 뷰)를 반대방향으로 이동을 시킨다."

김종권님 블로그 사진

view1.bounds.origin.x = 10
view1.bounds.origin.y = 10
  • 위 코드가 적용이 되었을 때, 오른쪽 사진처럼 View1의 Sub View(하위 뷰, View2)가 10의 반대 방향으로(-10) 이동한 것을 알 수 있다.

 

정리

Frame

  • FrameView의 위치나 크기를 설정할 때 사용한다고 한다.
  • Frame Super View(상위 뷰)의 좌표계기준, Bounds 자기자신의 좌표계기준으로 origin/size가 결정된다.

 

Bounds

  • Bounds View 내부에 그림을 그릴 때, transformation 후 View의 크기를 알고 싶을 때, Sub View(하위 뷰)를 정렬하는 것과 같이 내부적으로 변경하는 경우에 사용한다고 한다.
  • Bounds를 옮기면 Sub View(하위 뷰)가 움직이는것처럼 보이는데 이 현상은 Super View(상위 뷰)의 Frame은 변하지 않고 그대로 있되, Sub View(하위 뷰)들을 그리는 좌표계의 기준이 달라지기 때문이라고 한다.

'iOS_Swift.zip' 카테고리의 다른 글

[iOS]App Thinning  (0) 2022.02.16
[iOS]lazy 키워드  (0) 2022.02.16
[iOS]Escaping Closure(@escaping)  (0) 2022.02.12
[iOS]SDWebImage 에러  (0) 2022.02.11
[iOS]카카오 로그인(소셜)  (0) 2022.01.25