iOS랑 친해지기

[iOS] Frame 과 Bounds (feat.CGPoint, CGSize, CGRect)

데브킹덕 2023. 8. 3. 17:09

UI위치를 구성하다 갑자기 헷갈려서 복습겸 frame과 bounds에 대하여 정리해보았다.

Frame bounds는 둘다 CGRect형이다.

CGRect는 origin(x,y좌표) 와 size(width,height)로 구성되어 있다.

 x,y좌표인 CGPoint 형태,  size 크기는 width,height값을 구하는 CGSize형태

 

CGPoint

- 2차원 좌표계에서 점을 구하는 구조체

 

 

x와 y좌표를 가지는 구조체

 

 

 

CGSize

- 너비 및 높이 값을 구하는 구조체

 

 

width와 height를 가지는 구조체

 

 

 

 

CGRect

사각형의 위치와 크기를 포함하는 구조체

 

origin 원점은 x,y좌표인 CGPoint 형태,  size 크기는 width,height값을 구하는 CGSize형태

 

x,y,width,height 값을 주어도 가능

 

 

 

 

Frame과 Bounds는 UIView의 instance property이고

CGRect형이라 x,y,width,height을 가짐

 

 

 

frame

한단계 상위 뷰에서의 위치에서의 사각형

수퍼뷰의 좌표계에서 뷰의 위치와 크기를 설명하는 프레임 사각형.

 

 

bounds

 

자신만의 좌표시스템에서의 사각형

자체 좌표계에서 보기의 위치와 크기를 설명하는 경계 사각형

 

 

 

 

1.superView는 superview(상위뷰)를 기준으로 0,0 좌표에 생성 됨

view1superView(상위뷰)를 기준으로 0,0 좌표에 생성 됨

 

2. superView는 superview(상위뷰)를 기준으로 x축100, y축 100 좌표에 생성 됨

view1 superView(상위뷰)를 기준으로 0,0 좌표에 생성 됨

 

3.superView는 superview(상위뷰)를 기준으로 x축100, y축 100 좌표에 생성 됨

view1는 상위뷰와 상관없이 자신만의 좌표로 0,0 좌표에 생성 됨

 

4..superView는 superview(상위뷰)를 기준으로 x축50, y축 50 좌표에 생성 됨

view1는 상위뷰와 상관없이 자신만의 좌표로 0,0 좌표에 생성 됨

-> view1이 좌측상단으로 이동한것 처럼 보이지만 자신의 좌표계로 가만히 있고,

superView만 부모뷰로부터의 움직이는 것을 볼 수 있음

 

결론 : Frame은 상위뷰의 영향을 받고 Bounds는 자신만의 좌표계에서의 좌표이다.