Open Do-hyun-Kim opened 11 months ago
CGPoint
는 2차원 좌표계의 점을 포함하고 있는 struct
이다.CGPoint
는 CGFloat
타입을 가진 x
좌표와 y
좌표를 값을 가지고 있다.CGPoint
는 View를 그릴 때만 사용하는 것이 아닌 x,y를 좌표를 나타낼때 사용할 수 있다.
// viewPoint를 통해 x,y 좌표를 나타낼 수 있다.
let viewPoint: CGPoint = CGPoint(x: 100, y: 300)
CGSize
는 width
, height
값을 포함하는 struct
이다.CGSize
는 CGFloat 타입을 가진 width
값과, height
값을 가지고 있다.CGSize
는 width
, height
값을 가지고 있지만 사각형을 의미하는 것이 아니다let viewSize: CGSize = CGSize(width: 400, height: 500)
CGRect
는 직사각형의 CGPoint
와 CGSize
값을 포함하고 있는 struct
이다.CGPoint
는 origin
Instance property가 CGSize
는 size Instance property가 가지고 있다.let viewFrame: CGRect = CGRect(origin: viewPoint, size: viewSize)
let view: UIView = UIView(frame: viewFrame
Bounds
, Frame
은 모두 각자의 CGSize
, CGPoint
를 가지고 있다는 것을 알려주고 싶으며, 즉 각자 독립적인 좌표 시스템을 알려주고 싶고자 이미지를 가져왔습니다.bounds
는 자신의 좌표계에서 View
의 위치와 크기를 나타낸다.bounds
의 좌표계는 frame
과 다르게 superview
의 영향을 받지 않으며, origin(CGPoint)
는 (0,0)
으로 초기화 되어 있다.
origin
좌표를 잡기 때문이다.bounds
size는 UIView에 자체 영역(Width, Height)를 나타낸다.bounds
size는 transform을 통해 회전을 해도 CGSize
에 영향을 받지 않으며 그대로 유지 됩니다. Frame
은 SuperView
좌표계를 기준으로 View의 위치와 크기를 나타낸다.subView
)의 바로 한칸 윗 계층의 view를 의미합니다. 또한 SuperView를 제거함으로써 SubView도 함께 제거됩니다.Frame
의 origin은 Super View
의 원점(0,0)을 기준으로 얼마나 떨어져 있는지를 나타낸다. 이때 원점은 가장 View의 가장 왼쪽 윗부분을 말하며 Super View
의 원점(0,0)이 곧 좌표의 시작점이 되기 때문에 Super View의 좌표계에서 나타낸다.Frame
의 size는 UIView의 영역을 모두 감싸는 사각형이다.Frame
은 transform
의 영향을 받으며 width
, height
,origin
값이 변경된다. Blue View
의 SuperView는 Red View
이고 Green View
의 SuperView는 Blue View이다.View를 그릴땐 (x, y) 좌표와 width, height값을 알아야 함. 그러나 실제 UIView를 init할 땐 frame의 파라미터로 CGRect가 필요하다.
let position: CGPoint = .init(x: 100, y: 200)
let position: CGPoint = .init(width: 100, height: 200)
CGRect : CGSize와 CGPoint를 품음
public struct CGRect {
public init()
public init(origin: CGPoint, size: CGSize)
public var origin: CGPoint
public var size: CGSize }
- 사용
```swift
let rect: CGRect = .init(origin: CGPoint(x: 100, y: 100), size: CGSize(width: 150, height: 150))
let simple : CGRect = .init(x: 50, y: 50, width: 50, height: 50)
frame은 Super View(최상위 X, 한 칸 윗 계층 View O)좌표계에서 View의 위치와 크기를 나타냄
frame은 UIView의 위치, 크기를 나타날 때 사용한다.
자신의 좌표계에서 View의 위치와 크기를 나타내는 것
View를 회전(transfomation)한 후 View의 실제 크기를 알고 싶을 때 사용함
View 내부에 그림을 그릴 때(drawRect) 사용함
ScrollView에서 스크롤을 할 때 사용
Bounds와 Frame의 차이
Frame과 Bounds 모두
CGRect
타입이다. 그리고 이CGRect
는 뷰의 위치를 나타내는CGPoint
타입의origin
프로퍼티와 뷰의 사이즈를 나타내는CGSize
타입의size
프로퍼티를 가지는 구조로 되어있다.bounds
의 값을 변경하여 준다.📝 참고 사이트