본문 바로가기
iOS/iOS

Frame과 Bounds의 차이

by 황민우 2022. 2. 25.

- frame과 bounds는 UIView의 instance property입니다.

- UIView의 선언부를 보면, 둘 다 동일하게 CGRect 타입으로 선언되어있습니다.

- CGRect는 사각형의 위치(CGPoint)와 크기(CGSize)를 포함하는 구조체입니다.

- 자세한 설명은 아래 링크를 통해 쉽게 이해할 수 있습니다. https://zeddios.tistory.com/201

 

iOS ) CGRect와 CGSize의 차이, 그리고 CGPoint

안녕하세요 :) Zedd입니다. 오늘은!! CGRect와 CGSize의 차이에 대해서 알아볼거에요 :-) + 원래 CGRect와 CGSize의 차이점만 쓰고있었는데, 쓰다보니 CGPoint도 설명해야하게됐네요 XD.. 이번에 프로젝트하

zeddios.tistory.com

 


정의

frame

- SuperView(상위 뷰)의 좌표 시스템 안에서 View의 위치와 크기를 나타냅니다.

 

bounds

- View의 위치와 크기를 자신만의 좌표 시스템 안에서 나타냅니다.

 


- 다음과 같이 3개의 View가 있습니다.

- 각각 SuperView, SubView, View로 칭하겠습니다.

frame

- frame은 View의 상위 뷰에 대한 좌표값을 통해 위치를 나타냅니다.

- 기본 형태에서 SubView좌표를 (0,0)으로 변경해보겠습니다.

- 그럼 SubView는 SuperView 좌측 상단 기준에서 (0,0)만큼 위치하게 됩니다.

- ViewSubView를 기준으로 위치를 나타내기 때문에 SubView의 좌표값과는 무관하게 위치의 변화가 없습니다. 

- 그럼 이번에는 SubView의 좌표값을 (10,10), View의 좌표값을 (0,0)으로 변경해보겠습니다.

- 자신의 부모 뷰를 따라, 즉 SubViewSuperView를 기준으로 ViewSubView를 기준으로 사각형을 위치시킵니다. 


bounds

- bounds는 자신만의 좌표를 통해 위치를 나타냅니다.

- 위와 동일하게 기본 형태에서 SubView 좌표를 (0,0)으로 변경해보겠습니다.

- 기본 형태에서 아무런 변화가 일어나지 않습니다. 이는 bounds의 기본 좌표값(default)이 (0,0)이기 때문입니다.

- SubView의 좌표를(30,30)으로 변경해보겠습니다.

- 그럼 SubView가 오른쪽 하단으로 가야 할 거 같은데, 갑자기 View의 위치가 왼쪽 상단으로 이동하게 됩니다.

- 이는 bounds가 상위 뷰와 무관하게 해당 위치에서 view를 다시 그리라는 의미로 적용되기 때문입니다. 

- 따라서 SubView가 움직이지 않는 것으로 보이고, View가 움직이는 것으로 보이는 것입니다.

- 실제로 View는 가만히 있고, SubView가 화살표의 방향대로 움직이는 것이라고 이해하시면 됩니다.


내용 출처

https://zeddios.tistory.com/203

 

iOS ) Frame과 Bounds의 차이 (1/2)

안녕하세요 :) Zedd입니다. 지금 다른 글을 쓰고있는데, 쓰면 쓸수록 쓸 주제가 많아집니다...급 이 글을 쓰게 됐어요 XD.. 아무튼 오늘은 저도 궁금했던 Frame과 Bounds의 차이를 알아볼거에요 :) 다음

zeddios.tistory.com

 

'iOS > iOS' 카테고리의 다른 글

Delegate,Block,Notification,KVO  (0) 2022.02.28
Delegate 패턴이란?  (0) 2022.02.26
Class와 Struct의 차이  (0) 2022.02.25
as, as?, as!의 차이  (0) 2022.02.24
Escaping Closure  (0) 2022.02.23

댓글