Ответ 1
Для преобразования между численными типами данных создайте новый экземпляр целевого типа, передав исходное значение в качестве параметра. Итак, чтобы преобразовать 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
и т.д.