ここに私のコード。 2つの値をCGRectMake(..)
に渡し、エラーを取得しています。
let width = CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription as CMVideoFormatDescriptionRef!).width
// return Int32 value
let height = CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription as CMVideoFormatDescriptionRef!).height
// return Int32 value
myLayer?.frame = CGRectMake(0, 0, width, height)
// returns error: '`Int32`' not convertible to `CGFloat`
エラーを返さないようにInt32
をCGFloat
に変換するにはどうすればよいですか?
数値データ型間で変換するには、ソース値をパラメーターとして渡して、ターゲット型の新しいインスタンスを作成します。 Int32
をCGFloat
に変換するには:
let int: Int32 = 10
let cgfloat = CGFloat(int)
あなたの場合、次のいずれかを行うことができます:
let width = CGFloat(CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription as CMVideoFormatDescriptionRef!).width)
let height = CGFloat(CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription as CMVideoFormatDescriptionRef!).height)
myLayer?.frame = CGRectMake(0, 0, width, height)
または:
let width = CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription as CMVideoFormatDescriptionRef!).width
let height = CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription as CMVideoFormatDescriptionRef!).height
myLayer?.frame = CGRectMake(0, 0, CGFloat(width), CGFloat(height))
Swiftの数値型間で暗黙的または明示的な型キャストはないため、Int
をInt32
やUInt
などに変換する際にも同じパターンを使用する必要があります。
width
とheight
をCGFloat
に明示的に変換するには、CGFloat's
初期化子:
myLayer?.frame = CGRectMake(0, 0, CGFloat(width), CGFloat(height))