swift ios8.1 cgfloat int32

¿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))