CGRect
이다.CGPoint
A structure that contains a point in a two-dimensional coordinate system.
2차원 좌표계에서 점을 포함하는 구조체입니다.
먼저, 위치부터 알아보자. 공식문서의 설명을 보면, 2차원 좌표계에서 점! 을 표함하는 구조체라고 나와있다.
가장 중요한 포인트는 점 이다. 2차원 좌표에서 점을 표현하려면? 2개의 좌표값이 필요할 것이다.
실제 코드상에 구현되어있는 CGPoint
를 보면:
public struct CGPoint {
public init()
public init(x: CGFloat, y: CGFloat)
public var x: CGFloat
public var y: CGFloat
}
x
, y
라는 CGFloat
값을 가지고 있다.CGFloat
The basic type for floating-point scalar values in Core Graphics and related frameworks.
코어 그래픽 및 관련 프레임워크에서 부동 소수점 스칼라 값의 기본 유형입니다.
뭐라는거냐
이 타입의 크기와 정밀도는 CPU 아키텍처에 따라 다르다.
64비트 CPU용으로 빌드하는 경우 CGFloat
타입은 Double
타입과 동일한 "64비트 IEEE 이중 정밀 부동소수점 타입"이다.
32비트 CPU용으로 빌드하는 경우 CGFloat
타입은 Float
타입과 동일한 "32비트 IEEE 단일 정밀 부동소수점 타입"이다.
CGPoint
는?CGPoint
로 돌아와서, 실제 앱에서 이 값은 뷰를 그릴 때 어디에 영향을 줄까?CGSize
A structure that contains width and height values.
너비 및 높이 값을 포함하는 구조체입니다.
자. 뷰의 시작점을 구했다. 그 다음, 뷰의 크기가 어느정도인지 알아보자.
중요한 점은 CGSize
라는 이름에서도 알 수 있듯, 뷰의 크기 이다. 2차원 좌표계에서 크기는 너비와 높이값이 필요하다.
이 역시 실제 코드상에 구현되어 있는 CGSize
를 보면:
public struct CGSize {
public init()
public init(width: CGFloat, height: CGFloat)
public var width: CGFloat
public var height: CGFloat
}
역시 width
와 height
라는 두 CGFloat
값을 가지고 있다.
그럼 실제 앱에서 이 값은 뷰를 그릴 때 어디에 영향을 줄까?
CGRect
A structure that contains the location and dimensions of a rectangle.
직사각형의 위치와 치수를 포함하는 구조체입니다.
그럼 이제 CGRect
이 무엇인지 쉽게 유추가 가능하다.
위에서 설명한 CGPoint
와 CGSize
를 가지고 있는 구조체이다. 코드상에 구현되어 있는 CGRect
을 보면:
public struct CGRect {
public init()
public init(origin: CGPoint, size: CGSize)
public var origin: CGPoint
public var size: CGSize
}
origin
이라는 CGPoint
값과, size
라는 CGSize
값을 가지고 있다.
그리고 이니셜라이저를 보면, 이 두 프로퍼티를 초기화 하고 있다.
결론적으로, origin
은 뷰의 위치를, size
는 뷰의 크기를 결정하는 것이다.
실제로 우리가 뷰를 그리고자 할 때는 이 CGRect
가 들어간다.
let view = UIView(frame: CGRect)
let rect: CGRect = .init(origin: CGPoint(x: 50, y: 100), size: CGSize(width: 200, height: 250))
let rect: CGRect = .init(x: 50, y: 100, width: 200, height: 250)
let rect: CGRect = .init(x: 50, y: 100, width: 200, height: 250)
let newView: UIView = .init(frame: rect)
newView.backgroundColor = .orange
self.view.addSubview(newView)
CGPoint
CGFloat
CGSize
CGRect
iOS) CGPoint, CGSize, CGRect
iOS) CGRect와 CGSize의 차이, 그리고 CGPoint