- 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)만큼 위치하게 됩니다.
- View는 SubView를 기준으로 위치를 나타내기 때문에 SubView의 좌표값과는 무관하게 위치의 변화가 없습니다.

- 그럼 이번에는 SubView의 좌표값을 (10,10), View의 좌표값을 (0,0)으로 변경해보겠습니다.
- 자신의 부모 뷰를 따라, 즉 SubView는 SuperView를 기준으로 View는 SubView를 기준으로 사각형을 위치시킵니다.

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 |
댓글