(2022/03/27 更新)
描画系の処理などで頻繁に出てくるCGFloatについて解説します。
環境
この記事の情報は次のバージョンで動作確認しています。
【Xcode】11.6
【Swift】5.2.4
【iOS】13.6
【macOS】Catalina バージョン 10.15.6
【Swift】5.2.4
【iOS】13.6
【macOS】Catalina バージョン 10.15.6
CGFloatとは
CGFloatは座標やサイズを表す際に使用する専用の実数型です。
ビルドするCPUアーキテクチャによってサイズと精度が異なり、64ビットCPU用にビルドする場合はDoube型と同様、32ビットCPUにビルドする場合はFloat型と同様です。
頭のCGはAppleの描画系フレームワーク(Core Graphics)の略です。
使い方
Swift標準の型とほぼ同様の使い方になります。
代入
1 2 3 4 |
let width: CGFloat = 10 print(width) // 10.0 |
キャスト(型変換)
1 2 3 4 5 |
let x: Double = 20 let width: CGFloat = CGFloat(x) print(width) // 20.0 |
引数の型がCGFloatの場合
引数の型がCGFloatの場合、数値をそのまま書けます。
1 2 3 4 |
import SwiftUI let up = UnitPoint(x: 10, y: 20) // UnitPoint(x: CGFloat, y: CGFloat) |
他の型のプロパティを渡す場合は、次のようにキャストが必要です。
1 2 3 4 5 6 |
import SwiftUI let width = 10 let height = 20 let up = UnitPoint(x: CGFloat(width), y: CGFloat(height)) // キャストしないとエラー |
タイププロパティ
CGFloatは、型に紐づく定数(スタティックプロパティ)をいくつか持ちます。
代表的なものを紹介します。
.pi
円周率(3.14159...)を表します。
.infinity
無限大を表します。
.zero
ゼロ値を表します。
あわせて読みたい記事
【Swift】CGSizeの使い方
CGSizeは幅と高さの情報を保持する構造体です。 物理的なサイズだけでなく、距離ベクトルを表す為に使用される事もあります。 ベクトルとしてその値は負になる可能性もあります。