content uiimage swift core-foundation cgimage

uiimageview content mode



¿Cómo creo un UIImage desde un CGImage en Swift? (4)

¿Estás seguro de que group.posterImage no es opcional?

has probado

var img = UIImage(CGImage: group.posterImage!)

Estoy intentando crear un UIImage desde el método ALAssetsGroup#posterImage . En Objective-C, simplemente podría llamar [UIImage imageWithCGImage:group.posterImage] pero en Swift, UIImage(CGImage: group.posterImage) me da un error de compilación:

Could not find an overload for ''init'' that accepts the supplied arguments

¿Qué estoy haciendo mal?


Aquí hay un ejemplo que debería funcionar para usted con Xcode 8.3:

let frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 1920, height: 1080)) let cgImage = CIContext().createCGImage(CIImage(color: .black()), from: frame)! let uiImage = UIImage(cgImage: cgImage)


Si mira los documentos en Xcode6, verá que posterImage() devuelve un Unmanaged<CGImage>! (En Swift, en ObjC devuelve un CGImageRef ). Después de una investigación de los docs encontré esto:

Cuando recibe un objeto no administrado de una API sin anotar, debe convertirlo inmediatamente en un objeto administrado en memoria antes de trabajar con él.

Entonces tu solución sería:

UIImage(CGImage: group.posterImage().takeUnretainedValue())


Utilice init con CGIImage:

UIImage.init(CGImage: group.posterImage, scale: self.scale, orientation: .UpMirrored)