CGRect
CGRect 는 x, y 좌표(origin)와 width, height 인 크기(size)를 가진다.
UIView 는 CGRect라는 오브젝트를 frame 과 bounds 라는 변수를 통해 가지고 있다.
frame
- frame 의 x, y 좌표는 부모 뷰(super view)의 원점(0, 0) 을 기준으로 좌표가 측정 되어진다.
- frame 의 width, height 는 해당 뷰 전체를 감쌀 수 있는 사각형의 크기 이다.
200*200의 사각형이 기울어져 있다면, 기울어진 사각형을 포함하기 위해 frame.width, height는 더 크게 측정된다.
bounds
- bounds 의 x, y 좌표는 자신 스스로의 좌표로, 최초 생성시에는 0, 0 으로 초기화 된다.
- bounds 의 사이즈는 실제 그려진 뷰의 사이즈 이다.
- 뷰를 회전 시킨다고 해서 bounds.origin은 바뀌지 않는다. (그대로 0, 0)
- bounds 의 origin은 해당 뷰의 뷰포트를 옮기는 행위라고 이해할 수 있다. (frame은 이동하지 않기 때문에 해당 뷰의 위치는 그대로 존재한다.) 따라서 origin 을 100, 100으로 설정하면, 뷰포트가 100, 100으로 이동한 것으로 인식하고, 해당 뷰의 하위 뷰들은 좌상단으로 -100, -100 만큼 이동한 것처럼 보여진다.
'IOS' 카테고리의 다른 글
SwiftUI 에서 UIKit 사용하기 (0) | 2022.11.01 |
---|---|
NSCollectionLayoutDimension 알아보기 (0) | 2022.10.15 |
Swift 접근 한정자 (0) | 2022.10.05 |
스위프트 Attributes (0) | 2022.10.04 |
스위프트 Generic (0) | 2022.10.04 |