Frame, Bounds는 CGRect 타입인 View의 Instance Property이다.
둘의 차이점에 대해 알아보자.
CGRect
- 사각형의 위치와 크기를 포함하는 구조체
- CGPoint - x, y 좌표, CGSize - width, height
Frame
The frame rectangle, which describes the view's location and size in its superview's coordinate system.
- 상위뷰의 좌표 시스템
- frame을 변경하면?
자식 뷰의 위치도 변경된다 -> 자식 뷰의 frame은 변경되지 않았으므로 - 언제 사용?
UIView 위치나 크기를 설정하는 경우
Bounds
The bounds rectange, which describes the view's location and size in its own coordinate system.
- 자신만의 좌표 시스템
- 기본 좌표: (0, 0)
- bounds의 origin을 변경한다는 것은? 곧, subView들이 화면상에서 drawing 되는 위치가 변경됨을 의미
=> subView들의 frame 값을 변화시키는 것이 아니다. 부모뷰 좌표축이 변하면서 subView가 그려져야 하는 위치가 달라졌기 때문
ScrollView/TableView 등을 스크롤할 때, scrollView.bounds가 변하고, 그리하여 subView들이 그려지는 위치가 대표적인 예
(subView들의 frame이 달라지는 게 아님)
ex ) targetView.bounds.origin.x = 60;
targetView.bounds.origin.y = 50;
이라고 하면 targetView가 x축-> 60, y축-> 50으로 이동된 자식 뷰가 그려짐.!!!!!!!!!! - 언제 사용?
- View 내부에 그림을 그릴 때 (drawRect)
- transformation 후, View의 크기를 알고 싶을 때
- 하위 View를 정렬하는 것과 같이 내부적으로 변경하는 경우
Ref.
Frame과 bound의 차이(2/2) : https://zeddios.tistory.com/231
Frame과 bound의 차이(1/2) : https://zeddios.tistory.com/203
CGRect와 CGSize의 차이, 그리고 CGPoint: https://zeddios.tistory.com/201
'iOS > iOS 기본기' 카테고리의 다른 글
[iOS] Delegate, Notification, KVO 비교 및 장단점 정리 (0) | 2019.12.10 |
---|---|
[iOS] Layout - Safe Area (0) | 2019.12.09 |
[iOS] int vs NSInteger vs NSNumber (0) | 2019.12.05 |
[iOS] NSOperation vs. GCD (0) | 2019.11.29 |
[iOS] UIKit framework 계층도 (1) | 2019.11.25 |