CGRect, CGPoint, CGSize에 대해
Why?
View를 Custom하고 있는 도중,
CGRect, CGSize가 중간중간 등장해 궁금해졌습니다.
특히 Frame과 Bounds의 차이를 이야기 하기 전,
먼저 이해하고 넘어가야하는 부분이기도 해서 포스팅하게 되었습니다.
CGRect
CGRect는 CGPoint와 CGSize로 나타냅니다.
그럼 CGPoint ,CGSize는 무엇일까요?
(1) CGPoint
공식문서를 보시면,
' 2차원 좌표시스템에서 점을 포함한 구조체 '
라고 설명되어 있습니다.
(???)
XCode -> CGPoint Definition으로 들어가
코드상으로는 어떻게 되어있는지 확인해보겠습니다.
음.. 단순히 x,y 값을 가지고 있는 모습을 확인할 수 있습니다.
CGPoint는
위치 즉, "좌표값을 나타내는 keyword"
라고 생각하시면 편하실 것 같네요.
(2) CGSize
공식문서를 보시면,
' width(넓이)와 height(높이)를 포함하는 구조체 '
라고 설명되어 있네요.
가장 중요한 것은
width와 height를 포함한다고 해서 '사각형'으로 인지되는게 아닌,
width와 height의 " value(값) "을 나타내는 것입니다.
이걸로 '사각형을 만드는 것은 아니다'라는 말이죠.
XCode -> CGSize Definition으로 들어가
코드상으로는 어떻게 되어있는지 확인해보겠습니다.
보시다시피,
width와 height로 구성되어 있는 모습을 확인할 수 있습니다.
CGRect
공식문서를 보시면,
' 사각형(rectangle)의 위치와 크기를 포함하는 구조체 '
라고 설명되어 있네요.
이제서야 명확한 사각형의 설명이 들어가있군요.
XCode -> CGRect Definition으로 들어가
코드상으로는 어떻게 되어있는지 확인해보겠습니다.
코드상으로 보시면, 309번 줄에 CGPoint와 CGSize가 포함된 것을 보실 수 있죠.
또한 원점(origin)도 포함되어 있는걸 보실 수 있습니다.
즉,
CGPoint와 CGSize가 합쳐진 것이 CGRect
라고 보시면 될 것 같습니다.
간단한 예시코드입니다.
보시다시피, CGRect는
CGPoint와 CGSize와는 다르게
x, y, width, height 모두 구현이 가능한 것을 확인하실 수 있습니다.
(이외에 여러 .init이 있지만, 이번 글에서는 다루지 않겠습니다.)
해당 그림은 Zedd님의 블로그에서 발췌해왔는데요. 아마 이 그림이 가장 명확한 표현인 것 같습니다.
사실 이 그림 한장으로 이번 포스팅을 설명이 가능하며, 마무리할 수도 있겠네요.
오류가 있거나, 피드백이 있다면 언제든지 댓글로 알려주세요!
감사합니다 :)
- 참조문서
iOS ) CGRect와 CGSize의 차이, 그리고 CGPoint
CGPoint, CGSize, CGRect에 대해서 알아보자.
https://developer.apple.com/documentation/corefoundation/cgpoint https://developer.apple.com/documentation/corefoundation/cgsize
https://developer.apple.com/documentation/corefoundation/cgrect