✍️

CGRectとは

2022/07/10に公開

CGRectとは

A structure that contains the location and dimensions of a rectangle.

renctangleとは

rectangleは長方形といった意味です。iOSにはCGRectという構造体が設けられていますが、これはCoreGraphicsというグラフィックのための領域で利用される長方形を表したものです。長方形というのは必然的に縦横の大きさを持つわけですが、グラフィックとしては表示される以上位置も必要になります。

CG(CoreGraphics) + Rectangle

recgtangleとはで述べたように、iOSのグラフィックスに関してはCoreGraphicsという領域があります。その中に含まれているグラフィックのための中心的な構造体にはCGから始まる名称を与えられています。文字通り、CoreGraphicsを短略した言葉です。

たとえば、

  • struct CGFloat

The basic type for floating-point scalar values in Core Graphics and related frameworks.

  • struct CGPoint

A structure that contains a point in a two-dimensional coordinate system.

  • struct CGSize

A structure that contains width and height values.

  • struct CGVector

A structure that contains a two-dimensional vector.

いずれもグラフィックを構成するために必要とされるような値であることがわかります。

すでに述べたように、CGRectというのはCoreGraficで描写される長方形を表した構造体であり、長方形である以上は縦横の大きさを持つわけですが、グラフィックとしては表示される位置も必要になります。

大きさはsize

縦横の大きさは、英語ではsizeとなります。

位置はorigin

そして、その位置は座標x,yで示されるoriginです。

このsizeとoriginという2つの要素によって決まるのがCGRectです。このように考えると、次のCGRectのイニシャライザで与えられている引数の意味が理解できます。

init(origin: CGPoint, size: CGSize)
//Creates a rectangle with the specified origin and size.
init(x: Double, y: Double, width: Double, height: Double)
//Creates a rectangle with coordinates and dimensions specified as floating-point values.
init(x: Int, y: Int, width: Int, height: Int)
//Creates a rectangle with coordinates and dimensions specified as integer values.
init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
//Creates a rectangle with coordinates and dimensions specified as CGFloat values.

CGRectがなぜ重要か

CGRectは、Viewのframeやboundsに与えられる型でもあります。その一点で、グラフィックを扱う以上、理解しておかなければならない重要な型と言えます。

frameとは

The frame rectangle, which describes the view’s location and size in its superview’s coordinate system.

親Viewを基準とした相対的な位置と大きさを表すrectangle(長方形)

https://developer.apple.com/documentation/uikit/uiview/1622621-frame

boundsとは

The bounds rectangle, which describes the view’s location and size in its own coordinate system.

View自身を基準とした相対的な位置と大きさを表すrectangle(長方形)

https://developer.apple.com/documentation/uikit/uiview/1622580-bounds

参考

https://developer.apple.com/documentation/coregraphics

https://qiita.com/tanaka-tt/items/0b2df30e1c79638580f7

Discussion