본문 바로가기
공부/Apple

[Swift] frame과 bounds

by 초코팅촉 2024. 10. 19.
728x90
반응형

예시

들어가기에 앞서서 이런 뷰가 공통적으로 있다고 가정할께요?

frame

frame


위는 공식문서에 있는 내용입니다.

간단히 해석해보면
해당뷰의 Superview의 좌표계에서 위치와 크기이다.
이게 뭔말이냐 할 수 있는데요,
내가 선택한(.frame으로 접근한) 뷰의 Superview(부모뷰)안에서의 위치와 크기를 나타낸다.고 이해하심 됩니다.

그래서 좌표를 찍어보면 슈퍼뷰에서의 상대 위치로 위치가 찍힙니다.(아무튼 위치가 찍힌다는 말이죠)
또한 뷰의 크기를 계산하는것도 특이한데요,
크기를 정하는 영역은 항상 슈퍼뷰 안에서 직사각형 형태로 존재하기때문에 뷰가 돌아가도 공백을 다 포함한 너비를 구하려고 합니다. 한번 직접 볼까요?

회전 회오리~


묘하게 점선도 돌아간것 같지만 실제론 안에있는 빨간색 사각형만 돌아가있다는...

 

bounds


위 내용도 공식 문서 내용인데요 해석해보면
자신의 좌표계에서 위치와 크기를 나타낸다 고 합니다.
되게 간단하죠?
스스로가 기준이 되어서 좌표계를 만들고 그 안에서의 크기와 위치입니다.
따라서 bounds를 이용해서 좌표를 구할땐 항상 0,0이 나오게 됩니다.

그리고 크기를 정할때도 본인 스스로를 이용해서 정하기 때문에 뷰가 돌아가도 항상 자신의 모습에 맞춰 최소한의 너비를 구하게 됩니다.


이렇게 되는겁니다.

 

용도

frame에서 위치는 슈퍼뷰의 좌표계에서 상대적인 위치를 나타내고
뷰 영역을 전부 감싸는 사각형의 크기를 나타내기때문에
주로 UIView의 위치나 크기를 설정할 때 사용합니다


그럼 bounds의 offset은 언제 쓸까요?

바로바로 scrollView에서 씁니다.

scrollView의 위치를 확인하거나 지정할수도 있죠? 근데 스크롤 뷰는 뷰가 통째로 이동하는게 아니라 자기 자신 내에서 스크롤 하면서 내부에서 이동하는거잖아요?
그래서 이때 변경 및 지정하는 값이 bounds가 되는거고 실제로 우리가 bounds를 쓸땐 위의 예시처럼 뷰가 돌아갔지만 정확한 크기를 확인할 때, 혹은 방금 얘기한것처럼 스크롤뷰 내부에서 위치를 파악할 때 bounds를 씁니다.

 

 

오늘은 여기까지~
끝!

728x90
반응형