frame과 bounds에 관한 정보가 많기에, 간단하게 핵심을 요약하고 정리하겠습니다.
공식문서에서의 설명
frame : 수퍼 뷰의 좌표계에서 뷰의 위치와 크기를 설명하는 프레임 사각형입니다.
bounds: 자체 좌표계에서 뷰의 위치와 크기를 설명하는 경계 사각형입니다.
var bounds: CGRect { get set }
var frame: CGRect { get set }
// CGRect는 구조체
1단계 2단계로 나누어서 이해하면 편합니다.
1단계: 좌표 기준
bounds 부터 생각해보면, 어느 위치든 사각형의 view를 만들던 default bounds origin은 (0,0)입니다. (SuperView의 개념이 X)
frame은 SuperView로부터 만들어직 사각형의 view의 위치가 고려되어 좌표계가 형성됩니다. (SuperView 개념 O)
주황색 50 size의 정사각형 view
bounds 기준으로 생각하면 슈퍼뷰의 개념이 아닌, 좌표계 기준이기 때문에 시작점이 (0,0)입니다!
하지만 frame 기준으로 생각하면 흰색 superview의 기준이 있기 때문에 시작점은 (x,y)기준 (50,50) 입니다 !
좌표를 생각할때 시작점이 변동이 없는건 bounds 입니다.
이역시 단계별로 구별해서 생각해보면 이해하기 편할거라고 생각합니다.
2단계: Size 기준
width 50 height 60 인 사각형의 View를 회전시켰다고 생각했을때
bounds의 size:변동이 없다. 처음 View가 초기화 될때의 사이즈의 크기를 나타내기 때문! width 50, height 60
frame의 size: 회전된 더 커진 View의 size로 값이 변경된다. width 60, height 70 (10씩 커지게 회전 했다고 가정시)
'Deep Dive iOS' 카테고리의 다른 글
앱이 inactive 상태가 되는 경우 (0) | 2020.11.11 |
---|---|
iOS/Swift) UIKit 이란? (0) | 2020.11.10 |
시뮬레이터에서 할 수 없는 것과 실제 iPhone과의 차이 (0) | 2020.11.05 |
앱의 상태 및 수명주기에 관련한 메소드 (0) | 2020.11.05 |
Scene delegate? + App Delegate (0) | 2020.11.05 |