¿Cómo convertir el valor de Int32 a CGFloat en swift?
ios8.1 (2)
Para convertir entre tipos de datos numéricos, cree una nueva instancia del tipo de destino, pasando el valor de origen como parámetro. Así que para convertir un Int32
a un CGFloat
:
let int: Int32 = 10
let cgfloat = CGFloat(int)
En su caso usted puede hacer:
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)
o:
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))
Tenga en cuenta que no hay conversión de tipos implícita o explícita entre los tipos numéricos en swift, por lo que tiene que usar el mismo patrón también para convertir un Int
a Int32
o a UInt
etc.
Aquí mi código. Estoy pasando dos valores a CGRectMake(..)
y obteniendo un error.
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`
¿Cómo puedo convertir Int32
a CGFloat
para no devolver un error?
Simplemente convierte explícitamente el width
y el height
a CGFloat
usando el inicializador CGFloat''s
:
myLayer?.frame = CGRectMake(0, 0, CGFloat(width), CGFloat(height))