Frame vs Bounds(2)

lyoodong·2023년 7월 30일

bounds는 무엇이며 왜 필요한가?

  • 앞선 포스팅에서 설명한 듯이, bounds는 자기 자신의 좌표계를 기준으로 좌표와 사이즈를 리턴한다.

좌표는 항시 자기 자신을 기준으로 하기 때문에 (0,0) 이지 않을까?
bounds의 좌표값을 이동시킨다는 것이 어떤 의미가 있을까?

와 같은 의문이 발생할 수 있다.

  • 결과적으로 틀린 생각이다. 최초 초기화 시점에는 당연하게 (0,0)이지만, 항상 (0,0)이지 않을 수 있다. 이를 이해하기 위해서는 bounds의 좌표값을 이동시킨다는 것의 의미를 이해하고 넘어가야 한다.

  • 특정 view를 초기화하면 bounds는 자기 자신의 왼쪽 최상단을 원점으로 하나의 좌표계를 생성한다. 이때, 실제 화면에 보이는 것은 view의 사이즈 크기만 보이지만, 실질적으로 무한하게 연장할 수 있는 좌표가 생성된 것이다. 이에 따라, bounds의 좌표를 이동시키면, 자기 자신에 귀속된 하위뷰의 좌표는 고정되어 있고, 자신의 좌표계에서 그 값만큼 이동하는 것이다.

  • 결론적으로 bounds의 좌표를 이동한다는 것은, view를 일종의 창문으로 생각하고 창문의 위치를 이동시켜 다른 풍경을 보여준다는 것으로 설명할 수 있다.(물론 풍경이 view의 superview는 아니다. )

정리

이러한 특성을 종합해 정리해보면, frame은 superview로 부터 상대적인 좌표, 사이즈 등을 활용할 수 있다. 반면, bounds는 자기 자신을 기준으로한 좌표, 뷰 자체의 크기를 알 수 있다.

FrameBounds
기 준superview자기 자신
용 례- 오토레이아웃에서 기기에 따른 상대적인 좌표, 사이즈- view가 회전했을 때 view 자체의 크기 , scrollView에서 활용(창문에 어떤 부분을 나타낼지 결정)

0개의 댓글