본문으로 바로가기

[iOS] CGPoint, CGSize, CGRect

category ios 개발/iOS 2022. 5. 17. 12:44

앱만들때 뷰 속성을 건들다 보면 CGSize, CGPoint, CGRect같은 타입이 있잖슴

그거에 대해서 정리할거임ㅇㅇ

 

1. CGPoint

CGPoint

CGPoint란 2차원 좌표계에서 한 점을 포함하는 구조체임

한 평면에서 x좌표, y좌표를 가지고 있다고 보면 됨

 

2. CGSize

CGSize

CGSize란 너비와 높이값을 포함하는 구조체임

 

3. CGRect

CGRect

CGRect는 직사각형의 위치와 크기를 포함하고있음

CGSize랑 햇갈리면 안되는게 CGSize는 너비와 높이 즉 크기만 가지고 있다면
CGRect 얘는 크기는 물론 위치까지 포함하고있는친구임

보면은 origin이랑 size를 포함하고있는데

origin은 CGPoint고 size는 CGSize임

 

그럼 여기서 한가지 의문이 드는게 size는 너비와 높이를 가지고있는 CGSize이므로 CGRect가 크기를 가진다는건 이해가 가는데 CGPoint로 어떻게 위치를 알까

저기 노란점이 바로 origin임

그림을 보면 알겠지만 오리진을 기준으로 오른쪽 아래로 뷰가 그려짐

즉 오리진은 뷰에서 왼쪽 최상단에 위치한다고 볼수있음

 

우리가 앱을 만들때 뷰를 코드로 구현하다보면 frame이라는것을 구현해줘야하지않잔슴

이 frame은 바로 CGRect로 돼있음

왜냐면 화면에 뷰를 그릴때는 오리진랑 사이즈를 알아야 그릴수 있기 때문임

 

생각해보자

뷰의 크기만 알고있을때는 어디를 기준으로 잡아서 그려야할지 모르고

오리진만 알고있을때는 당연히 어떤 크기로 그려야할지 모르잖슴

UIView의 생성자

그렇기때문에 우리는 뷰를 그리기 위해서 위치랑 사이즈정보를 모두 가지고있는 CGRect를 사용하는것임

오토레이아웃을 잡을때도 뷰의 크기와 위치를 모두 잡아줘야하는것도 같은 이유임

 

그렇다면 CGRect의 오리진은 어디를 기준으로 x, y가 결정되는걸까?

그건 다음에 frame이랑 bound의 차이에 대해서 알아보는글에서 알아볼거임

 

끝!