CGPoint, CGSize, CGRect
๐ง Why?
iOS์์ View๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ํ์ํ๋ค.
- View์ ์์ ์์น๋ฅผ ์๊ธฐ์ํ x,y ์ขํ
(์ด ์ขํ๋ iOS ๋ทฐ ๊ธฐ์ค์ ์ธ **์ผ์ชฝ ๊ผญ๋๊ธฐ (0,0)**์ผ๋ก๋ถํฐ ์์)
- ์์์ง์ ๋ถํฐ ์ด๋ ํฌ๊ธฐ๋งํผ ๊ทธ๋ฆด ๊ฑด์ง์ ๋ํ width, height
CGPoint
A structure that contains a point in a two-dimensional coordinate system
- 2์ฐจ์ ์ขํ๊ณ์ ์ ์ ํฌํจํ๋ ๊ตฌ์กฐ์ฒด
public struct CGPoint {
public var x: CGFloat
public var y: CGFloat
public init()
public init(x: CGFloat, y: CGFloat)
}
๋ค์๊ณผ ๊ฐ์ด CGFloat ํ์ ์ x, y ๊ฐ์ ๊ฐ์ง๋ ๊ตฌ์กฐ์ฒด์ด๋ค. โจ ๋ฐ๋ผ์ View์ ์์น๋ฅผ ๋ํ๋ผ ๋ CGPoint๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋ ๊ผญ View์ ์์น๋ฅผ ๋ํ๋ผ ๋๋ง ์ฐ๋ ๊ฒ์ด ์๋๋ผ x, y ๋ฅผ ๋ํ๋ด์ผ ํ ๋ ์ธ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
let pos: CGPoint = .init(x: 100, y: 200)
// ๋ด๊ฐ ์ฌ์ฉํ ์
let scene = GameScene(size: view.frame.size)
scene.anchorPoint = CGPoint(x: 0, y: 1)
// ์์ ์ ์ผ์ชฝ ์๋จ์ผ๋ก ์ค์
CGSize
A structure that contains width and height values
- ๋๋น์ ๋์ด ๊ฐ์ ํฌํจํ๋ ๊ตฌ์กฐ์ฒด
- ์ฌ๊ฐํ์ ์๋ฏธํ๋ ๊ฒ์ด ์๋
public struct CGSize {
public var width: CGFloat
public var height: CGFloat
public init()
public init(width: CGFloat, height: CGFloat)
}
๋ค์๊ณผ ๊ฐ์ด CGFloat ํ์ ์ width, height ๊ฐ์ ๊ฐ์ง๋ ๊ตฌ์กฐ์ฒด์ด๋ค. View์ ์ฌ์ด์ฆ๋ฅผ ๋ํ๋ผ ๋ CGSize๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
let size: CGSize = .init(width: 150, height: 200)
CGRect
A structure that contains the location and dimensions of a rectangle
- ์ฌ๊ฐํ์ ์์น์ ํฌ๊ธฐ๋ฅผ ํฌํจํ๋ ๊ตฌ์กฐ์ฒด
- ์ค์ UIView๋ฅผ ๊ตฌํํ ๋ frame์ ํ๋ผ๋ฏธํฐ๋ก CGRect๊ฐ ์ฌ์ฉ๋๋ค.
let myView: UIView = .init(frame: CGRect)
public struct CGRect {
public var origin: CGPoint
public var size: CGSize
public init()
public init(origin: CGpoint, size: CGSize)
}
์ ์ฝ๋์์ ๋ณด์ด๋ฏ CGRect๋ CGPoint ํ์ ์ origin๊ณผ CGSize ํ์ ์ size๋ฅผ ํฌํจํ๊ณ ์๋ค. ์ฆ, View๋ฅผ ๋ํ๋ผ ๋ origin์ x,y ์ขํ๋ฅผ size๋ width, height๋ฅผ ๋ํ๋ธ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ค์ View์ frame์ ์ ๊ทผํ๋ ๋ฒ
let rect: CGRect = .init(origin: CGPoint(x: 100, y: 200), size: CGSize(width: 150, height: 200))
๊ฐ๋จํ๊ฒ ํํ
let rect: CGRect = .init(x: 100, y: 200, width: 150, height: 200)
์ค์ View ์ ์
let rect: CGRect = .init(x: 100, y: 200, width: 150, height: 200)
let myView: UIView = .init(frame: rect)
myView.backgroundColor = .blue
self.view.addSubview(myView)